質問: NFC Forum Type4AのNDEFを経由してAndroidアプリへデータを受け渡しする方法を検討しています。 AndroidでNDEFを読み書きするアプリを作った後、そのアプリを自動起動する方法としては、 * 起動条件をintent-filterとして記述してアプリに含めておく * NDEFにAARレコードを含めておく の2つがあると思います。 いずれにしてもアプリを呼び出す前段階としてOS側で1回はNDEFを解析しているはずですが、起動されたアプリはOSが解析して得たNDEFレコード内の情報をアプリ側で流用することはできるのでしょうか? それとも起動してもらった後、アプリ側で再通信と再解析を行ってCCファイルおよびNDEFファイルを取得し解析し直さなければならないのでしょうか? 具体的には、例えばNDEFファイル内に1つのNDEFメッセージがあり、NDEFメッセージに * NFC well-known-type (Type: "T") "Hello, world!" * NFC external-type (Type: "android.com:pkg") という2つのNDEFレコードが記録されている場合、AAR (android.com:pkg)で指定されたパッケージIDを持つアプリが自動起動しますが、起動された時点でアプリは"Hello, world!"という情報を得るための再通信・再解析を必ずしなければならないのかどうか?という質問です。
回答: Android OSが解析した情報であれば、アプリ起動時にIntentに含まれているかと思います。 リファレンスの内容ですが、NDEFメッセージであれば、Intentから`NfcAdapter.EXTRA_NDEF_MESSAGES`のキーで取得できるのではないでしょうか。 **NDEFメッセージの場合** ``` Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMessages != null) { NdefMessage[] messages = new NdefMessage[rawMessages.length]; for (int i = 0; i < rawMessages.length; i++) { messages[i] = (NdefMessage) rawMessages[i]; } // Process the messages array. ... } ``` **タグの場合** ``` Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); ``` Intentに含まれて渡されない情報であれば通信する必要があるかと思います。