在Android O上,当禁用应用的通知时,不仅针对特定频道(或频道),而且针对整个应用,应用内的所有Toast消息将不再显示。这是正常的吗? 顺便说一句,我没有错过.show()调用或其他任何东西,即使在Android上运行时禁用应用程序通知,同一个正在运行的应用程序也会显示Toast。奥利奥,但不是在奥利奥上奔跑时:
Toast.makeText(getContext(), "TOAST", Toast.LENGTH_LONG).show();
有人知道这是Oreo上的错误还是部分变化? 我在Android website上没有看到任何具体提及的内容。
修改:
这个问题here不一样,因为它要求Toast的替代方案。我在问这是一个已知的bug还是奥利奥变化的一部分。似乎正确的答案是Redman的回答以及他发布的问题跟踪器上的Google问题。这是一个似乎尚未解决的错误。 (另一个问题没有引用该问题)。
答案 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)
解决方案解决方案:
答案 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();
对于片段。享受