Android 11 为了保护用户而弃用了自定义消息框视图。为了给开发者更多的时间适应这些变更,只有在您的应用以 Android 11 为目标平台时,这些变更才会生效。
来自后台的自定义消息框被屏蔽
出于安全方面的考虑,同时也为了保持良好的用户体验,如果包含自定义视图的消息框是以 Android 11 为目标平台的应用从后台发送的,系统会屏蔽这些消息框。请注意,仍允许使用文本消息框;此类消息框是使用 Toast.makeText()
创建的,并不调用 setView()
。
如果您的应用仍尝试从后台发布包含自定义视图的消息框,系统不会向用户显示相应的消息,而是会在 logcat 中记录以下消息:
W/NotificationService: Blocking custom toast from package \
<package> due to package not in the foreground
消息框回调
如果您希望在消息框(文本消息框或自定义消息框)出现或消失时收到通知,请使用新的 addCallback()
方法。
文本消息框 API 变更
由于平台行为发生了变更,以 Android 11 为目标平台的应用会发现文本消息框受到以下负面影响:
getView()
方法返回null
。- 以下方法的返回值并不反映实际值,因此您不应在应用中依赖于它们:
- 以下方法是空操作,因此您的应用不应使用它们: