我的 Android NFC 应用程序在完成读取智能卡后,会再次显示相同的 NFC 标签信息,并由操作系统再次启动。事实上,如果你不移动手机,它就会进入一个永久循环。正在读取的数据量确实需要一两秒钟,所以最后它会重新开始。(这在我的 Galaxy S2 Gingerbread 和我的 ICS 上的 S3 上相当常见)
当 NFC 源(智能卡)没有改变并且没有从手机上移开时,如何阻止它重复?
我的活动有一个意图过滤器:
<intent-filter >
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.nfc.action.TAG_DISCOVERED" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/filter_nfc" />
有一份技术清单
<tech-list>
<tech>android.nfc.tech.IsoDep</tech>
</tech-list>
源代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
resolveIntent(getIntent());
}
@Override
public void onNewIntent(Intent intent) {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
private void resolveIntent(Intent intent) {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
final String action = intent.getAction();
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
....work
handled = true;
}
if (!handled) {
Log.e(tag, "Unknown intent " + intent);
finish();
return;
}
}