2016-09-28 83 views
-1

我已成功将外部记录写入NFC标签。当我使用第三方标签阅读器来评估写入的外部记录时,我会看到适当的值,它是一个单一的正整数。但是,当我运行我的代码(下面)以查看标记(使用Toast)上的有效内容(外部记录)的值以便将该值合并到“if”语句中时,我得到不同的价值。到目前为止,我已经看到以下内容:NFC外部记录返回格式错误?

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

} 

感谢您的任何帮助!

回答

0

​​被定义为byte []。当您在toast()统计中使用​​时,可以使用它指向该阵列的指针。所以你看到的是数组的地址。当你想获得字节[]的字符串表示时,可以使用例如:

String s = new String(payload);