Jos*_*hua 5 java android broadcast broadcastreceiver
首先,我创建了一个BroadcastReceiver空体。然后,我将其添加到 AndroidManifest.xml 中。但我发现BroadcastReceiver在清单中声明并没有收到任何广播。我通过以下方式发送广播
sendOrderedBroadcast(new Intent("com.example.action"), null)
Run Code Online (Sandbox Code Playgroud)
或者
adb shell am broadcast -a com.example.action
Run Code Online (Sandbox Code Playgroud)
这两种方法都适用于Android 7,但不适用于Android 8。但是,如果BroadcastReceiver通过 声明registerReceiver,则仍然可以接收广播。
另一方面,android.hardware.usb.action.USB_DEVICE_ATTACHED在 Android 7 和 8 上运行良好。
我想问为什么会出现这种情况?我已经在模拟器和物理设备中对其进行了测试。他们有相同的行为。
AndroidManifest.xml
...
<receiver
android:name=".device.UsbBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="com.example.action" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
</receiver>
...
Run Code Online (Sandbox Code Playgroud)