NdefRecord中有一种新方法允许将AndroidApplicationRecord写入NdefMessage。这在冰淇淋三明治之前不是必需的,但从那时起如果你想在你的应用程序中处理来自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());
答案 0 :(得分:1)
您不需要AAR来处理特定的URI。 AAR只是另一种保证应用程序启动的方法,而不是另一个可以处理相同URI的应用程序。
答案 1 :(得分:0)
AAR 在ICS上保证您的应用收到NDEF消息。它也不必是NDEF消息中的第一条记录(Intent过滤器将与之匹配)。因此它与Intent过滤器中的URI或MIME类型匹配完全不同。 但是,AAR使用外部类型作为NDEF记录,这是一种在ICS之前不支持的记录。因此,如果您希望它与预ICS设备一起使用,通常不应将其用作NDEF消息的第一条记录。