Недавно я пытался получить намерение 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. Возможно это глюк андроид версии установленной на галакси с3? Возможно, это особенность ICS.
Приветствуется любая информация!