【发布时间】:2014-07-09 07:14:36
【问题描述】:
跟随教程:http://code.tutsplus.com/tutorials/reading-nfc-tags-with-android--mobile-17278
我想知道是否可以仅在应用程序打开并且在处理这些事件的当前活动上时响应 NFC 请求?
目前我的清单中有(在响应的活动中):
<!-- NFC Reader -->
<intent-filter>
<action android:name="android.nfc.action.TAG_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在活动中创建
// Responds to NFC Device Reader
resolveIntent(getIntent());
和
@Override
public void onNewIntent(Intent intent) {
setIntent(intent);
resolveIntent(intent);
}
private void resolveIntent(Intent intent) {
String action = intent.getAction();
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {
Parcelable tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
processInformation(tag);
}
}
原因是我有一个身份验证过程,当应用程序直接加载此活动时,该过程被绕过。
【问题讨论】:
-
发生了什么?您当前的代码没有按您希望的那样工作的行为是什么?
-
扫描NFC芯片时启动Activity。相反,我只希望活动在打开时收集 NFC 数据。如果应用未打开且不在此活动中,我不希望有任何响应。
-
然后尝试动态注册该活动,这样它就不会每次都调用。即使您的应用程序未处于活动状态。只有当您的 Activity 处于打开状态时它才会调用,使用 Activity 生命周期方法来处理它。
标签: android nfc intentfilter