0

我创建了一个名为 的类MyBroadcastReceiver,它覆盖了BroadcastReceiver,并在 AndroidManifest 中注册了它。但它会在onReceive()方法中报告的唯一操作是USB_DEVICE_ATTACHEDUSB_DEVICE_DETACHEDUSB_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>
4

0 回答 0