类似的问题 -如何在 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 的信息,并最终让应用程序中的每个选项卡都可以访问该信息。