Android Application Record与pre-ICS的兼容性

时间:2012-01-26 10:43:26

标签: android nfc android-4.0-ice-cream-sandwich ndef android-applicationrecord

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

2 个答案:

答案 0 :(得分:1)

您不需要AAR来处理特定的URI。 AAR只是另一种保证应用程序启动的方法,而不是另一个可以处理相同URI的应用程序。

答案 1 :(得分:0)

AAR 在ICS上保证您的应用收到NDEF消息。它也不必是NDEF消息中的第一条记录(Intent过滤器将与之匹配)。因此它与Intent过滤器中的URI或MIME类型匹配完全不同。 但是,AAR使用外部类型作为NDEF记录,这是一种在ICS之前不支持的记录。因此,如果您希望它与预ICS设备一起使用,通常不应将其用作NDEF消息的第一条记录。