NFC外部记录的格式错误?

时间:2016-09-28 22:41:32

标签: nfc external record

我已成功将外部记录写入NFC标签。当我使用第三方标记阅读器来评估写入的外部记录时,我看到了适当的值,这是一个正整数。

然而,当我运行我的代码(下面)以查看有效负载(外部记录)的值在标签上(使用Toast)以便将该值合并到“if”语句中时,我会变得不同值。到目前为止,我已经看到了以下内容:

B @ 41fb4278或B @ 41fb1190。

此时,外部记录的值仅为“2”。我怎么才能简单地返回/写2?

protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);


    if(intent.hasExtra(NfcAdapter.EXTRA_TAG))

    {
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        byte[] payload = "2".getBytes();  ///this is where the ID (payload) for the tag is assigned.

        NdefRecord[] ndefRecords = new NdefRecord[2];
        ndefRecords[0] = NdefRecord.createExternal("com.example.bmt_admin", "externaltype", payload);
        ndefRecords[1] = NdefRecord.createApplicationRecord("com.example.bmt_01");
        NdefMessage ndefMessage = new NdefMessage(ndefRecords);
        writeNdefMessage(tag, ndefMessage);

        Toast.makeText(this, "NFC Scan: " + payload, Toast.LENGTH_SHORT).show();
    }

}

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

payload定义为byte []。在payload语句中使用toast()时,可以使用指向该数组的指针。因此,您看到的是数组的地址。如果要获取byte []的字符串表示形式,可以使用例如:

String s = new String(payload);