Прослушивание NFC с ожидающим намерением и намерением

1

У меня есть приложение с ожидающим намерением, подписанное на ACTION_NDEF_DISCOVERED, и нормальное намерение подписано на ACTION_TECH_DISCOVERED.

Похоже, мне нужно иметь последнее намерение, так что мое приложение появится на экране действий выбора NFC.

Однако, с моим ожидающим намерением (который моделируется после ссылки API code), я должен дважды сканировать тег для OnNewIntent для стрельбы.

Итак, возникает несколько подозрений:

  • Мне действительно нужны два намерения для захвата как в сканировании приложений, так и вне приложений?
  • Почему в ожидании намерения требуется два сканирования? Это потому, что я подписался с ним в манифесте и в коде, как показано в примере, или потому, что у меня есть два намерения NFC (хотя и на разных уровнях намерений NFC)?

Вот основной вопрос:

Как мне сделать эту работу так, чтобы за пределами приложения мое приложение появилось в окне действий NFC и внутри приложения для запуска OnNewIntent требуется только сканирование?

Теги:
android-pendingintent
nfc
android-intent

1 ответ

4
Лучший ответ

Из вашего описания, похоже, что ваш код set- в основном в порядке. Одна вещь, которую вы, возможно, пропустили: когда ваше приложение запускается из окна действий NFC (выбор приложения), ваше приложение Activity будет запущено с помощью onCreate(), и вы должны получить намерение NFC с помощью getIntent(). Только после enableForegroundDispatch()PendingIntent) новые возможности NFC вызовут onNewIntent().

Вы можете сделать это следующим образом:

void onCreate(Bundle savedInstanceState) {
  ... // set up your Activity
  handleNfcIntent(getIntent);
}

void onNewIntent(Intent intent) {
  super.onNewIntent(intent);
  handleNfcIntent(intent);
}

void handleNfcIntent(Intent intent) {
  // NFC Intent handling code here
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню