2012-01-26 11 views
1

NdefRecordにAndroidApplicationRecordをNdefMessageに書き込む新しいメソッドがあります。これはIce-Cream-Sandwich以前は必要ではありませんでしたが、アプリケーションのNFCタグ(インテントフィルタで定義されているような)から特定のURIを処理したい場合は、定義しない限りアプリケーションには渡されませんそのレコード。Androidアプリケーション前のICSとの互換性レコード

createApplicationRecord(String packageName); 

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

まずあなたが次の場所

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()); 

答えて

1
であなたのAARを追加任意のNFCデバイス (URIは/フォーマットさ URI_PREFIX_MAPを短縮することができることを覚えておいてください)

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

で読めるようにしたいあなたのNdefRecordを追加

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

0

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

関連する問題