2

ACTION_NDEF_DISCOVEREDにサブスクライブされた保留中のインテントと にサブスクライブされた通常のインテントを持つアプリがありACTION_TECH_DISCOVEREDます。

アプリが NFC 選択アクション画面に表示されるようにするには、後者のインテントが必要なようです。

ただし、保留中のインテント (API 参照コードをモデルにしたもの) では、タグを 2 回スキャンして起動する必要がありOnNewIntentます。

したがって、いくつかの疑惑が生じます。

  1. アプリ内スキャンとアプリ外スキャンの両方をキャプチャするには、本当に 2 つのインテントが必要ですか?
  2. 保留中の意図が 2 つのスキャンを必要とするのはなぜですか? サンプルに示されているようにマニフェストとコードでサブスクライブしているためですか、それとも 2 つの NFC インテント (NFC インテント レベルは異なりますが) があるためですか?

核となる質問は次のとおりです。

アプリの外側でアプリが NFC アクション ウィンドウに表示され、アプリの内側ではスキャンのみが起動する必要があるようにするにはどうすればよいですOnNewIntentか?

4

1 に答える 1

4

あなたの説明から、コードのセットアップはほとんど問題ないようです。見落としているかもしれませんが、アプリが 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
}
于 2012-03-22T08:56:37.223 に答える