主屏幕小部件 BroadcastReceiver 可以监听电话事件吗?
Posted
技术标签:
【中文标题】主屏幕小部件 BroadcastReceiver 可以监听电话事件吗?【英文标题】:Can a homescreen widget BroadcastReceiver listen for phone events? 【发布时间】:2020-06-20 18:07:53 【问题描述】:当有“请勿打扰”更改时,我正在尝试更新我的主屏幕小部件。因为 WidgetProvider 本身就是一个 BroadcastReceiver,所以我认为它会很简单。但是当我打开或关闭 Dnd 时,我没有看到任何 Toast。是不是说WidgetProvider只能发送广播不能接收?
这是我的代码:
@Override
public void onReceive(Context context, Intent intent)
super.onReceive(context, intent);
String action = intent.getAction();
assert action != null;
if (action.equals(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED))
System.out.println("Success!");
【问题讨论】:
【参考方案1】:您没有显示您是如何注册该广播的。如果它在清单中,则您尝试接收的广播未列在the implicit broadcast exceptions "whitelist" 上,因此您可能无法在 android 8.0+ 上接收它。您能够在 Android 8.0+ 上接收该广播的唯一方法是,如果您有一个一直在运行的前台服务,那么这会产生成本。
还有:
我不熟悉那个特定的广播,所以我不确定它是否是在 DND 更改时发送的(尽管它看起来确实是合理的)
您没有显示Toast
;相反,您正在向标准输出打印一条消息,该消息应该被重定向到 Android 上的 Logcat
【讨论】:
谢谢,是的,对不起,我的意思是 sout 不是 Toast...DND 更改广播在我的主要活动中运行良好。是的,WidgetProvider 已在我的清单中注册,这可以解释为什么它不起作用。再次感谢,这是有道理的!以上是关于主屏幕小部件 BroadcastReceiver 可以监听电话事件吗?的主要内容,如果未能解决你的问题,请参考以下文章