2016-05-23 102 views
1

我想創建一個迷你應用程序來閱讀NFC標籤,然後發送到Android上的其他設備。這部分已經完成,我可以讀取標籤,並且可以在EditText上打印字符串。但我也希望將我從該標籤中讀取的文字發送給其他NFC設備。我怎樣才能做到這一點?如何通過NFC將文本字符串發送到其他設備?

//I have this code here when a tag is discovered... 
@Override 
protected void onNewIntent(Intent intent) { 
    if (intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED)) { 
     String result = ""; 
     result = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); 
     myTag = result; 
     txtTag.setText(myTag); 

    } 
} 

如何通過NFC將文本字符串發送到其他設備?

回答

0

你想要做的事情根本不可能與Android權利否(可能不會在未來)。

您當前的讀取防撞標識符(UID,PUPI,或不管它是要求您閱讀特定的標籤平臺):

result = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); 

防撞標識符是非常低的一部分協議層。雖然Android不支持基於主機的卡模擬(請參閱Android HCE),但Android API無法控制諸如UID之類的低級參數。通常,它也不可能在NFC標籤上改變該信息。

需要注意的是,如果你的標籤也包含在NDEF格式的一些高層次的數據,你可以獲取,使用:

Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
NdefMessage msg = null; 
if ((rawMsgs != null) && (rawMsgs.length > 0)) { 
    msg = (NdefMessage)rawMsgs[0]; 
} 
if (msg != null) { 
    // do something with the received message 
} 

的Android不支持存儲上(寫的)這些NDEF消息的NFC標籤,它也支持發送NDEF消息到其他NFC設備(見Beaming NDEF Messages to Other Devices)。

  • 例如,存儲在NFC標籤NDEF消息,你可以使用:

    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
    Ndef ndef = Ndef.get(tag); 
    if (ndef != null) { 
        try { 
         ndef.connect(); 
         ndef.writeNdefMessage(msg); 
        } finally { 
         ndef.close(); 
        } 
    } else { 
        NdefFormatable ndefFormatable = NdefFormatable.get(tag); 
        if (ndefFormatable != null) { 
         try { 
          ndefFormatable.connect(); 
          ndefFormatable.format(message); 
         } finally { 
          ndefFormatable.close(); 
         } 
        } 
    } 
    
  • 或爲了通過對等網絡模式(Android Beam功能)將消息發送到另一個NFC設備,你可以使用:

    NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 
    nfcAdapter.setNdefPushMessage(msg, this); 
    
+0

感謝烏拉圭回合的答案..我要去跟着UR結構,所以我有一個問題...我應該在哪裏我去送串在設備上安裝此應用嗎? –

+1

是的,你還需要一個應用程序作爲接收器。如果沒有特定的應用,Android不知道該如何處理數據。 –

相關問題