1

NdefRecord には、AndroidApplicationRecord を NdefMessage に書き込むことができる新しいメソッドがあります。これは以前の Ice-Cream-Sandwich では必要ありませんでしたが、それ以降、アプリケーションで NFC タグからの特定の URI を処理したい場合 (intent-filter で定義されているように)、定義しない限り、アプリケーションに配信されません。その記録。

createApplicationRecord(String packageName);

これはある種の互換パッケージでは利用できません (見つけられませんでした) が、実装はかなり単純です。

最初に、任意の NFC デバイスで読み取り可能にする NdefRecord を追加します (URI は でフォーマット/短縮できることに注意してくださいURI_PREFIX_MAP)

NdefRecord[] nr = new NdefRecord[2];
nr[0] = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_URI, new byte[0], uriBytes);

次の場所に AAR を追加します

static final byte[] RTD_ANDROID_APP = "android.com:pkg".getBytes();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    nr[1] = NdefRecord.createApplicationRecord("your.package.name");
else
    nr[1] = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, RTD_ANDROID_APP, new byte[] {}, "your.package.name".getBytes());
4

2 に答える 2

1

特定の URI を処理するために AAR は必要ありません。AAR は、同じ URI を処理できる別のアプリではなく、アプリが開始されることを保証する別の方法です。

于 2012-01-26T19:40:44.213 に答える
0

AARは、アプリが NDEF メッセージを受信することを ICS で保証します。また、NDEF メッセージの最初のレコードである必要もありません (これは、インテント フィルターが照合されるものです)。そのため、インテント フィルターでの URI または MIME タイプの一致とはまったく異なります。ただし、AAR は NDEF レコードに外部タイプを使用します。これは、ICS 以前はサポートされていない種類のレコードです。したがって、ICS 以前のデバイスで動作させたい場合は、通常、NDEF メッセージの最初のレコードとして使用しないでください。

于 2012-02-10T22:01:49.197 に答える