NdefRecord中有一个新方法,可以将AndroidApplicationRecord写入NdefMessage。在Ice-Cream-Sandwich之前的版本中,这不是必需的,但是从那时起,如果您想处理应用程序中NFC标签中的特定URI(如intent过滤器中定义的),则除非您进行了定义,否则它将不会传递给您的应用程序该记录。
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());
最佳答案
您不需要AAR即可处理特定的URI。 AAR只是保证您的应用程序已启动的另一种方法,而不是另一个可以处理相同URI的应用程序。