最近、私が見たすべてのサンプルと例に従って、ブロードキャストレシーバーを使用してインテント android.hardware.usb.action.USB_DEVICE_ATTACHED を受信しようとしています。
マニフェストでレシーバーを宣言しました。
<receiver android:name=".UsbDeviceReceiver">
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter"/>
アクティビティ コードでも同様のことを行いました - onStart と OnStop はレシーバーを登録/登録解除します。
IntentFilter filter = new IntentFilter();
filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
registerReceiver(mUsbReceiver, filter);
しかし、私は意図が捕らえられていることに気づきました。logcat を観察すると、USB デバイスを接続すると開始するアクティビティが検索され、接続を解除すると接続解除の意図がブロードキャストされることがわかります。前述のサンプルによると、これは当てはまりません。
メタデータに関して抜本的な何かが欠けていますか? android.hardware.usb.action.USB_DEVICE_DETACHED にはまったく問題はありません。おそらくこれは、Galaxy s3 にインストールされている Android バージョンのバグでしょうか? おそらくこれは ICS の「機能」です。
関連情報大歓迎です!