【问题标题】:Android Application Record compatibility with pre-ICSAndroid Application Record 与 pre-ICS 的兼容性
【发布时间】:2012-01-26 10:43:26
【问题描述】:

NdefRecord 中有一个新方法允许将 AndroidApplicationRecord 写入 NdefMessage。这在之前的 Ice-Cream-Sandwich 中不是必需的,但从那时起,如果您想在应用程序中处理来自 NFC 标签的特定 URI(如在意图过滤器中定义),它将不会被传递到您的应用程序,除非您定义那个记录。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多