如何从检测到的NFC标签(NDEF消息)中读取. Android NFC
作者:互联网
相似问题-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