У меня есть приложение с ожидающим намерением, подписанное на ACTION_NDEF_DISCOVERED
, и нормальное намерение подписано на ACTION_TECH_DISCOVERED
.
Похоже, мне нужно иметь последнее намерение, так что мое приложение появится на экране действий выбора NFC.
Однако, с моим ожидающим намерением (который моделируется после ссылки API code), я должен дважды сканировать тег для OnNewIntent
для стрельбы.
Итак, возникает несколько подозрений:
Вот основной вопрос:
Как мне сделать эту работу так, чтобы за пределами приложения мое приложение появилось в окне действий NFC и внутри приложения для запуска OnNewIntent
требуется только сканирование?
Из вашего описания, похоже, что ваш код 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
}