我创建了一个名为 的类MyBroadcastReceiver
,它覆盖了BroadcastReceiver
,并在 AndroidManifest 中注册了它。但它会在onReceive()
方法中报告的唯一操作是USB_DEVICE_ATTACHED
、USB_DEVICE_DETACHED
和USB_STATE
。
我希望能够检测到用户何时从状态栏通知中按下“弹出”按钮,因为这样做会使我的应用程序无法访问 USB 驱动器。我想我需要MEDIA_EJECT
为此采取行动。
我尝试过使用和不使用“文件”方案。唯一的区别是添加它会使任何操作都不起作用,所以我现在把它注释掉了。我也尝试过纯粹在 Kotlin 中做所有事情,我在其中声明 anIntentFilter
和 call registerReceiver()
。那也没有奏效。
难道我做错了什么?
MyBroadcastReceiver
班级:
class MyBroadcastReceiver: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val action = intent?.action
Log.d("onReceiveUsbMountEvent", "onReceiveUsbMountEvent action received = $action")
}
}
MyBroadcastReceiver
在 AndroidManifest 中注册:
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
<action android:name="android.hardware.usb.action.USB_STATE" />
<action android:name="android.intent.action.MEDIA_EJECT" />
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<action android:name="android.intent.action.MEDIA_UNMOUNTED" />
<action android:name="android.intent.action.ACTION_MEDIA_BAD_REMOVAL" />
<action android:name="android.intent.action.ACTION_MEDIA_REMOVED" />
<!-- <data android:scheme="file" />-->
</intent-filter>
</receiver>