2015-05-02 5 views
0

Я написал программу, в которой я пытаюсь писать и читать тег NFC, что может помочь пользователю в отправке сообщения. Я успешно написал тег, но всякий раз, когда я пытаюсь читать, приложение «Теги» показывает vnd.android.nfc://ext/nfclab.com:smsService, но не позволяет мне отправлять сообщение.NFC Read Tag SMS Service

WriteSmsActivity.java:

@Override 
    public void onNewIntent(Intent intent) { 
     Log.i("Foreground dispatch", "Discovered tag with intent: " + intent); 
     Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
     String externalType = "nfclab.com:smsService"; 
     String smsNumber = smsNumberEditText.getText().toString(); 
     String smsBody = smsBodyEditText.getText().toString(); 
     String urlAddress = "sms:"+smsNumber+"?body="+smsBody; 
     NdefRecord extRecord = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, externalType.getBytes(), new byte[0], urlAddress.getBytes()); 
     NdefMessage newMessage = new NdefMessage(new NdefRecord[] { extRecord}); 
     writeNdefMessageToTag(newMessage, tag); 

    } 
} 
+1

опубликуйте свой logcat –

+0

@MCJ, сделанное вами обновление по вашему вопросу превратило ваш вопрос в ** совершенно новый **. Поэтому я вернулся к предыдущему вопросу. Если вы хотите ** задать другой вопрос **, откройте для этого новый вопрос. –

ответ

0

Android отображает непризнанный NFC Forum внешний вид nfclab.com:smsService (обратите внимание, что только строчные буквы должны быть использованы для имен внешних типов см my answer here), потому что вы сохранили, что тип записи на вашем теге. Этот тип является настраиваемым типом, созданным nfclab.com (для довольно искусственных примеров в их книге, которые не будут работать без настроенного приложения для чтения) и ни в коем случае не стандартизированы. Следовательно, Android не знает, что он должен делать с этой записью.

Стандартный способ хранения готовых SMS-сообщений на тегах NFC - это схема sms: URI. Таким образом, вы, как правило, создается запись URI, содержащий ваши смс: URI:

String smsUri = "sms:" + phone_number + "?body=" + text_message; 
NdefRecord smsUriRecord = NdefRecord.createUri(smsUri); 

С Android 4.1 (или так), такие документы должны быть обработаны автоматически Android и позволит вам открыть смс: URI в приложение SMS по умолчанию.