我有一个
Android应用程序,需要检测USB外围设备何时连接或分离.首次连接外围设备时它工作正常,但是当它随后被分离时,我没有收到任何通知(即,我没有收到动作为ACTION_USB_DEVICE_DETACHED的Intent).
这是我的AndroidManifest.xml的相关部分:
<activity android:name=".LauncherActivity"> <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> </intent-filter> <Meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" /> <Meta-data android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" android:resource="@xml/device_filter" /> </activity>
还可能值得注意的是,LauncherActivity仅在连接设备时启动服务,并在分离时停止服务.在任何一种情况下,LauncherActivity总是立即完成.所有这些都发生在LauncherActivity.onCreate中.
有任何想法吗?
解决方法
USB_DEVICE_DETACHED是广播意图,因此您可能希望在清单中声明BroadcastReceiver,并使用适当的intent-filter进行分离操作,同时附加元数据.
USB_ACCESSORY_DETACHED也是如此,感兴趣的是谁.
USB_ACCESSORY_DETACHED也是如此,感兴趣的是谁.
摘要:
USB_XXX_ATTACHED是一个活动意图
USB_XXX_DETACHED是广播意图
(其中XXX =设备|附件)
见:http://developer.android.com/guide/components/intents-filters.html
“这些消息传递系统中没有重叠:广播意图仅传递给广播接收者,而不传递给活动或服务”