类似的问题-如何在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附带的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无法解析”的错误。我认识到代码作者很可能是把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中的信息,并最终使每个选项卡都可以访问该信息。