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的应用程序。

10-08 17:35