2016-09-23 98 views
1

我使用下面的代码为“读” NFC标签:阅读NFC标签上的“有效载荷”数据?

@Override 
protected void onResume() { 
    super.onResume(); 

    // read nfc tag....this is what will "read" the external record? 
    if (getIntent().hasExtra(NfcAdapter.EXTRA_TAG)) { 

     NdefMessage ndefMessage = this.getNdefMessageFromIntent(getIntent()); 

     if(ndefMessage.getRecords().length > 0){ 

      NdefRecord ndefRecord = ndefMessage.getRecords()[0]; 

      String payload = new String(ndefRecord.getPayload()); 

      Toast.makeText(this, payload, Toast.LENGTH_SHORT).show(); 

     } 

    } 


    enableForegroundDispatchSystem(); 

} 

我得到一个错误,说这“不可能解决方法getNdefMessageFromIntent”有,我应该用另一种方法来“读取“标签上的有效载荷?不知道如何解决这个......感谢任何帮助!

回答

1

你可以尝试以下方法:

if (intent.getAction().equals(NfcAdapter.ACTION_NDEF_DISCOVERED)) { 
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
if (rawMsgs != null) { // NDEF Message available 
    NdefMessage msg =(NdefMessage) rawMsgs[0]; 
    NdefRecord ndefRecords = ndefMessage.getRecords(); 

    String payload = new String(ndefRecord[0].getPayload()); 
    Toast.makeText(this, payload, Toast.LENGTH_SHORT).show(); 
} 

}

+0

感谢corvairjo,我真的很感激的帮助!我会尝试这个并报告回来。 – Leo

+0

嗨corvairjo,我用我的应用程序取得了一点进展,但是我碰到了另一个障碍。我打开了另一个问题,所以我可以分享更多的代码。链接是:http://stackoverflow.com/questions/39713709/use-nfc-payload-variable-in-if-statement 你一直是一个很大的帮助,迄今为止,我提前感谢你的任何添加' l帮助这个话题! – Leo

+0

我正在稳步前进....因为我现在可以写入标签并阅读它......但是,我收到了一些奇怪的“有效负载”格式结果。我已经发布了另一个问题在这里: http://stackoverflow.com/questions/39758748/nfc-external-record-is-returning-in-wrong-format 一如既往,感谢您的任何帮助...我我一直在为你投票。 – Leo