

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!"という情報を得るための再通信・再解析を必ずしなければならないのかどうか？という質問です。


CC BY-SA 3.0
2017-04-22T08:03:16.693
34208
2017-04-24T01:41:59.837
20139
question
android android-intent
intent filterで起動されたNFCアプリにAndroidが渡す情報について


Android OSが解析した情報であれば、アプリ起動時にIntentに含まれているかと思います。  
[リファレンス](https://developer.android.com/guide/topics/connectivity/nfc/nfc.html#obtain-
info)の内容ですが、NDEFメッセージであれば、Intentから`NfcAdapter.EXTRA_NDEF_MESSAGES`のキーで取得できるのではないでしょうか。

**NDEFメッセージの場合**

[code]

    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.
        ...
    }
    
[/code]

**タグの場合**

[code]

    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    
[/code]

Intentに含まれて渡されない情報であれば通信する必要があるかと思います。


CC BY-SA 3.0
2017-04-24T01:41:59.837
34234
2017-04-24T01:41:59.837
20272
34208
answer