繁体   English   中英

Android Application Record与pre-ICS的兼容性

[英]Android Application Record compatibility with pre-ICS

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM