android - NdefRecord 崩溃是设备相关的

标签 android nfc

我有一种奇怪的情况,一行代码使一部手机崩溃,另一部却没有。具体行是我创建新 NdefRecord() 的行。我在下面包含了代码 fragment 。虽然评论中的版本适用于这两款手机,但我仍然想知道为什么我会看到这种效果。

我不清楚 NdefRecord 的构造函数(短 tnf、byte[] 类型、byte[] id、byte[] 有效负载)的引用。根据源代码,它不应该使用 null 作为参数 ( source at Grepcode )。

 private void setNdefBinary(byte[] bdata, int size, int index) {
    NdefRecord record;
    byte[] payload;

    // copy bytes into payload
    payload = new byte[size + 1];
    payload[0] = (byte) (index & 0xff);
    System.arraycopy(bdata, 0, payload, 1, size);

    /* this works on Xperia S and Samsung S3
        byte[] empty = new byte[0]; 
        record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, payload); */

        // this crashes on Xperia S, but works on Samsung S3
        record = new NdefRecord(NdefRecord.TNF_UNKNOWN, null, null, payload);

    ndefRecords[index] = record;

}

最佳答案

您在 Android SDK 中看到了 NdefRecord 的不同实现。较新的 Android SDK 允许空参数,较早的则不允许。

Android >= 16 接受空负载。传递 inn 空字节数组以使其全部向后兼容。

关于android - NdefRecord 崩溃是设备相关的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15988548/

相关文章:

android - Stripe PaymentMethodsActivity 添加谷歌支付按钮

java - 如何找到android屏幕的ppi

android - 如何使用 phonegap 读取非 ndef NFC 标签的数据

android - NestedScrollView 无法使用 match_parent 高度子项滚动

android - 在 volley 中接收带有 json 请求的 bool 变量

android - libGDX Scrollpane 不为单个标签滚动

nfc - 如何与 Felica 内存/智能卡通信?

c# - 如何从 viewmodel 使用 iOS/Xamarin 扫描 NFC 标签

已安装 Android 应用程序但无法在设备上打开