【问题标题】:Can a homescreen widget BroadcastReceiver listen for phone events?主屏幕小部件 BroadcastReceiver 可以监听电话事件吗?
【发布时间】: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!");
        }
     }

【问题讨论】:

    标签: java android broadcastreceiver android-widget


    【解决方案1】:

    您没有显示您是如何注册该广播的。如果它在清单中,则您尝试接收的广播未列在the implicit broadcast exceptions "whitelist" 上,因此您可能无法在 Android 8.0+ 上接收它。您能够在 Android 8.0+ 上接收该广播的唯一方法是,如果您有一个一直在运行的前台服务,那么这会产生成本。

    还有:

    • 我不熟悉那个特定的广播,所以我不确定它是否是在 DND 更改时发送的(尽管它看起来确实是合理的)

    • 您没有显示Toast;相反,您正在向标准输出打印一条消息,该消息应该被重定向到 Android 上的 Logcat

    【讨论】:

    • 谢谢,是的,对不起,我的意思是 sout 不是 Toast...DND 更改广播在我的主要活动中运行良好。是的,WidgetProvider 已在我的清单中注册,这可以解释为什么它不起作用。再次感谢,这是有道理的!
    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多