如何从检测到NFC标签(NDEF消息)读取。 Android的NFC(How to read f

2019-07-30 15:42发布

类似的问题- 如何在android系统检测读取NFC标签(NDEF内容)的详细信息?

我希望我的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创建MockNDEFtags,当应用程序列表,我可以选择处理这些生成的标签出现在我的应用程序中的NFCDemo示例应用程序。 然后我点击我的应用程序,它打开了没有问题,我只是需要一种方法来读取传递给它的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解决不了”我意识到,代码的作者可能把nfcintent作为一个占位符的意图具体到我的应用程序但林不知道什么IM应该放在它的位置。

我mainactivity启动我的应用程序看起来像这样

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解析信息,并最终有通过在应用程序的每个选项卡访问这些信息。

Answer 1:

试试这个片段从标签中提取信息:

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读/写



Answer 2:

要获得通过NFC标签启动活动在我的情况“nfcintent”只是使用意图

Intent nfcintent = getIntent();


文章来源: How to read from detected NFC tag (NDEF message). Android NFC