【问题标题】:NFC Read Tag SMS ServiceNFC读取标签短信服务
【发布时间】:2015-05-02 05:26:37
【问题描述】:

我编写了一个程序,我试图在其中写入和读取 NFC 标签,这可以帮助用户发送消息。我已成功写入标签,但每当我尝试阅读时,标签应用程序会显示vnd.android.nfc://ext/nfclab.com:smsService,但不允许我发送消息。

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);   

    }
}

【问题讨论】:

  • @MCJ 您对问题所做的更新将您的问题变成了一个全新的问题。因此,我回滚到上一个问题。如果您想问另一个问题,请为此打开一个新问题。

标签: android sms uri nfc ndef


【解决方案1】:

Android 会显示无法识别的 NFC 论坛外部类型 nfclab.com:smsService(请注意,外部类型名称只能使用小写字母,请参阅 my answer here),因为您将该记录类型存储在标签上。该类型是由 nfclab.com 创建的自定义类型(对于他们书中的相当人为的示例,如果没有自定义的阅读器应用程序将无法工作),并且绝不是标准化的。因此,Android 不知道应该如何处理该记录。

在 NFC 标签上存储现成的 SMS 消息的标准方法是 sms: URI 方案。因此,您通常会创建一个包含您的短信的 URI 记录:URI:

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

从 Android 4.1(或更高版本)开始,此类记录应由 Android 自动处理,并允许您在默认 SMS 应用程序中打开 sms: URI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多