禁用通知也会在Oreo上禁用Toast

时间:2018-06-07 13:31:55

标签: android

在Android O上,当禁用应用的通知时,不仅针对特定频道(或频道),而且针对整个应用,应用内的所有Toast消息将不再显示。这是正常的吗? 顺便说一句,我没有错过.show()调用或其他任何东西,即使在Android上运行时禁用应用程序通知,同一个正在运行的应用程序也会显示Toast。奥利奥,但不是在奥利奥上奔跑时:

Toast.makeText(getContext(), "TOAST", Toast.LENGTH_LONG).show();

有人知道这是Oreo上的错误还是部分变化? 我在Android website上没有看到任何具体提及的内容。

修改

这个问题here不一样,因为它要求Toast的替代方案。我在问这是一个已知的bug还是奥利奥变化的一部分。似乎正确的答案是Redman的回答以及他发布的问题跟踪器上的Google问题。这是一个似乎尚未解决的错误。 (另一个问题没有引用该问题)。

4 个答案:

答案 0 :(得分:4)

  

这是正常的吗?

是的,这是正常行为(或者android中可能存在错误)。

更好地使用select sa.id, b.batch_name from stock_adjust sa join ( select id, batch_name, 'ingredient_batch' table_name from ingredient_batch union all select id, batch_name, 'product_branch' table_name from product_branch union all select id, batch_name, 'packaging_batch' table_name from packaging_batch ) b on sa.batch_table_id = b.id and b.table_name = sa.batch_table_name 代替SnackBar

在Google问题跟踪器https://issuetracker.google.com/issues/36951147

上查看此信息

答案 1 :(得分:3)

我在8.1模拟器上测试过,即使在关闭通知 IF compileSdkVersion 25后,Toast工作也完全正常。如果您使用API level 26 or 27编译应用程序,则会出现问题。

Toast.makeText(getApplicationContext(), "TOAST", Toast.LENGTH_LONG).show();

环境详情:

模拟器 - Pixel 2 API 27(Android 8.1 Google API)

解决方案解决方案:

  1. Snackbar(已由雷德曼提出)
  2. toast-compat图书馆

答案 2 :(得分:1)

在9.0上也禁用烤面包。似乎这不是错误,因为用户现在具有比以前更具体的通知设置。

在Android Pie 9.0上,我在日志中得到此信息:

E/NotificationService: Suppressing toast from package com.xxxxxxxxxxx.xxxxx by user request.

答案 3 :(得分:0)

补充“ getContext()”或“ getApplicationContext()”的任何内容。例如:Toast.makeText(getApplicationContext(), "TOAST", Toast.LENGTH_LONG).show();用于活动。

Toast.makeText(getActivity().getApplicationContext(), "TOAST", Toast.LENGTH_LONG).show();

对于片段。享受