2016-05-23 6 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.

Обратите внимание, что если ваш тег также содержит некоторые данные высокого уровня в формате ЦНК можно получить, что с помощью:

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 не поддерживает хранящих эти ЦНК сообщения на (перезаписываемых) метки NFC и он также поддерживает отправку NDEF на другие устройства NFC (см. Beaming NDEF Messages to Other Devices).

  • E.g. хранить сообщение ЦНК на метке NFC можно использовать:

    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(); 
         } 
        } 
    } 
    
  • Или для того, чтобы отправить сообщение другому устройству NFC через равный-равному режиме (Android Beam), вы можете использовать:

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

Спасибо за ур ответ .. я собираюсь следовать ур структуру так, у меня есть вопрос ... я должен установить это приложение на устройстве, где им будет отправить строку? –

+1

Да, вам также понадобится приложение в качестве приемника. Android не будет знать, что делать с данными без конкретного приложения. –

Смежные вопросы