2016-09-23 83 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