对于静态广播,在android广播接收器中未调用onReceive()
我靠在听筒上。我在清单文件中声明了receiver,并使用MyBroadcastReceiver类来接收意图,但我无法接收任何意图。例如,当飞机模式改变或耳机插入或拔出时,从不调用OnReceive功能。下面是清单的代码对于静态广播,在android广播接收器中未调用onReceive(),android,broadcastreceiver,Android,Broadcastreceiver,我靠在听筒上。我在清单文件中声明了receiver,并使用MyBroadcastReceiver类来接收意图,但我无法接收任何意图。例如,当飞机模式改变或耳机插入或拔出时,从不调用OnReceive功能。下面是清单的代码 <receiver android:name=".MyBroadCastReceiver" android:exported="true"> <intent-filter> <
<receiver
android:name=".MyBroadCastReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
<action android:name="android.intent.action.HEADSET_PLUG" />
<action android:name="android.intent.action.AIRPLANE_MODE" />
</intent-filter>
</receiver>
}如果您的应用程序目标为8.0或更高版本。您不能再为清单中的隐式广播注册广播接收器,并且android.intent.action.flair\u模式是隐式广播。欲知详情
作为一种解决方法,您仍然可以在运行时使用Context.registerReceiver动态注册隐式和显式广播。但你的应用程序需要处于活动状态才能接收它。不需要更多的逻辑,比如你是如何启动的service@AravindV我没有任何服务,我只是想在飞机模式改变或耳机插入或拔出时接收广播。
public class MyBroadCastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
StringBuilder sb = new StringBuilder();
sb.append("Action: " + intent.getAction() + "\n");
sb.append("URI: " + intent.toUri(Intent.URI_INTENT_SCHEME).toString() + "\n");
String log = sb.toString();
Log.d(TAG, log);
Toast.makeText(context, log, Toast.LENGTH_LONG).show();
}