2016-05-23 104 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不知道该如何处理数据。 –

相关问题