私のアクティビティは android.nfc.action.TECH_DISCOVERED アクションに登録されており、一般的にうまく機能します:
<activity android:name="MyActivityToPpocessNfcTag"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/filter_nfc"
/>
</activity>
問題は「android.nfc.action.TECH_DISCOVERED」アクションの性質です。タグをスキャンするたびに、システムがアプリケーションの選択を求めるプロンプトを表示することに興味があります (プリインストール アプリケーションの中には、同様のタイプの nfc タグをキャプチャしていくつかの基本情報を表示するものもあります)。システムは「選択を記憶する」機能を提供しません。
その理由は理解できます。TECH_DISCOVERED アクションを呼び出すさまざまな種類の nfc タグがあります。ただし、このアクションでは、タグごとにアプリケーションをフィルタリングする方法を効果的に把握するのに十分な情報が得られないため、ユーザーは選択を迫られます。
これで、私のアプリケーションは間違いなく処理できるタグを把握できるようになりました。システムがアプリケーションを選択するように求める前に、このインテントをキャプチャする方法があるので、それに応じてアクションを実行できます。このシステムメッセージ「アプリケーションを選択してください」を取り除きたいだけで、すべてのnfcタグを消費したくありません。
「android.nfc.action.TECH_DISCOVERED」は、Android によって実行される NFC 処理の第 2 レベルであることに注意してください。最初のレベルは「android.nfc.action.NDEF_DISCOVERED」であり、Android が実行するアプリケーションを効果的に選択できるように、uri および mimeType データがあります。処理中の NFC タグは、NDEF_DISCOVERED ではなく TECH_DISCOVERED アクションを呼び出しています。