我正在倾斜广播接收器。我在清单文件中声明了接收器,并且具有MyBroadcastReceiver类来接收意图,但是我无法接收任何意图。例如,当更改飞机模式或插入或拔出耳机时,永远不会调用onRecive()函数。以下是清单的代码。
<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>
以下是BroadCastReceiver类的代码。
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();
}
}
答案 0 :(得分:0)
如果您的应用定位到8.0或更高版本。您不能再为清单中的隐式广播注册广播接收器,并且android.intent.action.AIRPLANE_MODE
是隐式广播。有关更多详细信息,read this
作为解决方法,您仍然可以在运行时使用Context.registerReceiver()
动态注册隐式和显式广播。但是您的应用必须还活着才能得到它。