8

我有一个以下列方式显示的吐司:

Toast.makeText(context, "The message", Toast.LENGTH_LONG).show();

我绝对确定我正在从 UI 线程显示 toast,我可以补充一点,它适用于许多设备,包括Galaxy S3的旧更新,但在最新更新之后,我的 toast 都没有显示。

有没有其他人经历过这个并有解决方案?

4

2 回答 2

11

在较新的 Android 手机中,应用设置中有一个“显示通知”复选框,出于某种原因,如果禁用通知,它也会禁用 Toast。该问题已在此处报告:

http://code.google.com/p/android/issues/detail?id=35013

但是查看源代码:

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/services/java/com/android/server/NotificationManagerService.java

看起来可能是故意的:

第 114 行:

private static final boolean ENABLE_BLOCKED_TOASTS = true;

第 693-707 行:

final boolean isSystemToast = ("android".equals(pkg));
if (ENABLE_BLOCKED_TOASTS && !isSystemToast && !areNotificationsEnabledForPackageInt(pkg))     {
    Slog.e(TAG, "Suppressing toast from package " + pkg + " by user request.");
    return;
}
于 2013-01-16T13:11:46.053 回答
5

由于 OP 在过去 24 小时内没有出现,我将发布在android-developers Google Group的一个线程上找到的解决方案。

问题是Show Notifications在设置中未选中此应用程序的选项(这在较新版本的 Android 中是可能的)。这不仅可以防止在通知栏中显示通知,还可以防止显示 toast。

在这里打开了一个错误。

于 2013-01-16T10:03:02.900 回答