我必须解决以下问题(如果可能的话): 我正在开发一款Android应用,它可以从互联网上加载与扫描的NFC标签相对应的信息。
只要活动在前台,我就会通过动作ACTION_TAG_DISCOVERED
(通过前台调度系统)收到意图,获取意图的NFC ID并继续。
但有人要求直接显示扫描标签的信息,即使活动尚未在前台。
通过将Android应用程序记录(AAR)中的程序包名称写入NFC标记来启动/将应用程序恢复到前台工作,但我没有收到带有标记ID的意图,而不扫描标记a第二次,活动开幕后。
是否有可能通过仅扫描一次NFC标签来启动活动并获取NFC标签的标签ID? 我现在研究的所有资源都说,需要在前台运行的活动来获取意图,包含扫描标签的ID。
修改
尝试更准确地解释我的问题。我得到了什么:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="vnd.android.nfc" />
</intent-filter>
我的活动:
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
if (intent.getByteArrayExtra(NfcAdapter.EXTRA_ID) != null) {
byte[] TagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)
…
}
}
}
只要活动正在运行,这样就可以了。 现在,活动处于后台或尚未创建。 我扫描NFC标签,活动开始,因为包被写入此NFC标签。启动后,扫描标签的ID应该可用,而不是第二次扫描标签
答案 0 :(得分:0)
我不确定我明白你遇到了什么问题,但我过去曾用这种方式使用NFC标签。
将此intent-filter放在清单中的Activity上:
<activity
android:name=".LibraryActivity"
android:label="@string/title_activity_library" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="myapp"
/>
</intent-filter>
</activity>
注意:您必须将“myapp”更改为NFC标签使用的任何方案
然后在您的活动中,您应该可以执行以下操作来获取标记中的数据:
public void onNewIntent(Intent intent) {
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
//do something with tagFromIntent
}
即使之前没有运行,也会启动您的活动。