Android 11 中消息框的更新

Android 11 为了保护用户而弃用了自定义消息框视图。为了给开发者更多的时间来适应这些变更,只有在您的应用以 Android 11 为目标平台时,这些变更才会生效。

来自后台的自定义消息框被屏蔽

出于安全方面的考虑,同时也为了保持良好的用户体验,如果包含自定义视图的消息框是以 Android 11 为目标平台的应用从后台发送的,则系统会屏蔽这些消息框。请注意,仍允许使用文本消息框;此类消息框是使用 Toast.makeText() 创建的,并不调用 setView()

如果您的应用仍尝试从后台发布包含自定义视图的消息框,则系统不会向用户显示相应的消息,而会执行以下操作:

  1. 显示以下消息框消息:

    Background custom toast blocked for package package-name. See g.co/dev/toast.

  2. 在 logcat 中记录以下消息:

    W/NotificationService: Blocking custom toast from package <package> due to package not in the foreground

消息框回调

如果您希望在消息框(文本消息框或自定义消息框)出现或消失时收到通知,请使用新的 addCallback() 方法。

文本消息框 API 变更

由于平台行为发生了变更,以 Android 11 为目标平台的应用会发现文本消息框受到以下负面影响: