问题描述: 在API 28中,BroadcastReceiver的onReceive方法永远不执行,无法接收到广播。
解决方法: 在API 26及更高版本中,Android引入了一项新的限制,即在应用处于后台时限制了隐式广播的发送和接收。因此,如果我们的应用在后台运行,那么BroadcastReceiver的onReceive方法将不会执行。
要解决这个问题,可以使用以下两种方法之一:
例如,将隐式广播意图Intent更改为明确的广播意图Intent:
// 隐式广播意图
Intent intent = new Intent("com.example.ACTION_MY_INTENT");
// 更改为明确的广播意图
Intent intent = new Intent(context, MyBroadcastReceiver.class);
intent.setAction("com.example.ACTION_MY_INTENT");
在AndroidManifest.xml文件中添加以下代码:
其中,com.example.ACTION_MY_INTENT
是你自定义的广播意图。
然后,在MyBroadcastReceiver类中重写onReceive方法,进行相应的处理。
这些解决方法可以确保在API 28中,BroadcastReceiver的onReceive方法能够正常执行,接收到广播。