ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何从检测到的NFC标签(NDEF消息)中读取. Android NFC

2019-11-01 03:27:23  阅读:190  来源: 互联网

标签:ndef android-intent nfc android


相似问题-How to read detected NFC tag (NDEF content) details in android?

我希望我的Android应用程序能够读取和解析检测到的NDEF消息.

我已经编辑了AndroidManifest.xml以检测nfc标签,并且添加了如下所示的意图过滤器

            <intent-filter>
            <action android:name="android.nfc.action.TAG_DISCOVERED"/>
            <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

我认为这很好,因为当我使用SDK附带的NFCDemo示例应用程序创建MockNDEFtags时,当我可以选择处理这些应用程序生成的标签的应用程序列表出现时.
然后,我单击我的应用程序,它没有问题地打开,我只需要一种方法即可读取NDEF消息中传递给它的数据.编码:

 Tag myTag = (Tag) nfcintent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

 // get NDEF tag details
 Ndef ndefTag = Ndef.get(myTag);
 ...
 NdefMessage ndefMesg = ndefTag.getCachedNdefMessage();

在类似的问题中被提出,在整个网络上,我发现了许多类似的答案.
我的问题是代码行

"Tag myTag = (Tag) nfcintent.getParcelableExtra(NfcAdapter.EXTRA_TAG);"

我收到错误消息“无法解决”
我意识到,代码的作者可能将nfcintent用作我的应用程序特定意图的占位符,但是我不确定应该放置什么.

启动我的应用程序的主要活动如下所示

public class TabsActivity extends TabActivity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TabHost tabHost = getTabHost();

    // Tab for Graph
    TabSpec graphspec = tabHost.newTabSpec("Graph");
    // setting Title and Icon for the Tab
    graphspec.setIndicator("Graph");
    Intent graphIntent = new Intent(this, GraphActivity.class);
    graphspec.setContent(graphIntent);

    // Tab for Intro
    TabSpec introspec = tabHost.newTabSpec("Intro");
    introspec.setIndicator("Intro");
    Intent introIntent = new Intent(this, IntroActivity.class);
    introspec.setContent(introIntent);


    // Adding all TabSpec to TabHost
    tabHost.addTab(introspec); // Adding intro tab
    tabHost.addTab(graphspec); // Adding graph tab

}

}

我认为启动应用程序时必须处理NFC标签.如果我只能从标记访问NDEFMessage,那么我已经可以使用android示例应用程序中的NdefMessageParser对其进行解析.我想解析NDEFmessage中的信息,并最终使该信息可通过应用程序中的每个选项卡访问.

解决方法:

试试这个代码片段从Tag中提取消息:

Parcelable[] rawMsgs = intent
            .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
    NdefMessage msg = (NdefMessage) rawMsgs[0];
    extractMessage(msg);

private void extractMessage(NdefMessage msg) {
        byte[] array = null;
        array = msg.getRecords()[0].getPayload();
}

还要查看此样本的NFC Reader/Writer

标签:ndef,android-intent,nfc,android
来源: https://codeday.me/bug/20191101/1980575.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有