Прослушивание NFC с ожидающим намерением и намерением - PullRequest
1 голос
/ 02 июня 2011

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

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

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

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

  1. Действительно ли мне нужны два намерения для захвата как при сканировании приложения, так и вне сканирования приложения?
  2. Почему для ожидающего намерения требуется два сканирования? Это потому, что я подписываюсь на него в манифесте и коде, как показано в примере, или потому, что у меня есть два намерения NFC (хотя и с разными уровнями намерений NFC)?

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

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

1 Ответ

4 голосов
/ 22 марта 2012

Из вашего описания, похоже, ваша настройка кода в основном в порядке. Одна вещь, которую вы, возможно, упустили: когда ваше приложение запускается из окна действий 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
}
...