主屏幕小部件 BroadcastReceiver 可以监听 phone 事件吗?
Can a homescreen widget BroadcastReceiver listen for phone events?
当出现“请勿打扰”更改时,我正在尝试更新我的主屏幕小部件。因为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!");
}
}
您没有显示您是如何注册该广播的。如果它在清单中,则您尝试接收的广播未在 the implicit broadcast exceptions "whitelist" 上列出,因此您可能无法在 Android 8.0+ 上接收到它。您能够在 Android 8.0+ 上接收到该广播的唯一方法是,如果您一直有前台服务 运行,那是有成本的。
还有:
我不熟悉那个特定的广播,所以我不确定它是否是在 DND 更改时发送的(尽管它看起来确实有道理)
你没有显示Toast
;相反,您正在向标准输出打印一条消息,该消息应该在 Android
上重定向到 Logcat
当出现“请勿打扰”更改时,我正在尝试更新我的主屏幕小部件。因为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!");
}
}
您没有显示您是如何注册该广播的。如果它在清单中,则您尝试接收的广播未在 the implicit broadcast exceptions "whitelist" 上列出,因此您可能无法在 Android 8.0+ 上接收到它。您能够在 Android 8.0+ 上接收到该广播的唯一方法是,如果您一直有前台服务 运行,那是有成本的。
还有:
我不熟悉那个特定的广播,所以我不确定它是否是在 DND 更改时发送的(尽管它看起来确实有道理)
你没有显示
Toast
;相反,您正在向标准输出打印一条消息,该消息应该在 Android 上重定向到 Logcat