Я проработал описание и образцы для USB-хоста на сайте developer.android.com , чтобы обнаружить подключенные и отсоединенные USB-устройства. устройств.
Если я использую фильтр намерений в файле манифеста для запуска моего приложения при подключении устройства, он работает отлично: подключите, устройство обнаружено, Android запрашивает разрешение на запуск приложения, информация об устройстве отображается в стол.
Приложение, которое я разрабатываю, не должно запускаться / завершаться только в том случае, если устройство подключено / отсоединено (например, в целях управления данными). Также я не хочу, чтобы открывалось диалоговое окно, если приложение уже запущено. Поэтому я решил не начинать деятельность напрямую, если устройство подключено, а зарегистрировать BroadcastReceiver, который (позже) должен уведомлять об активности, если устройство подключено / отсоединено. Этот приемник прекрасно распознает действие отсоединения, но не действие присоединения.
Мне не хватает разрешения или атрибута данных или чего-то подобного? В руководстве и примерах ничего не говорится о дополнительных необходимых атрибутах.
Вот файл манифеста:
И получатель:
public class FDRDetector extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Toast.makeText(context, "Action: " + action, 3).show();
// pops up only if action == DETACHED
}
Я не понимаю, почему работает тот же фильтр намерений, если я их использую по активности, но не в том случае, если они применяются к получателю? Даже если я настроил приемник и фильтр в коде, присоединения не распознаются.
Моя рабочая среда: IDE: Eclipse 3.7 с подключаемым модулем Android
Устройство: Acer Iconia Tab A500
Android: 3.1
Заранее спасибо