【问题标题】:Android NFC reading安卓NFC读取
【发布时间】: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


【解决方案1】:

我是本教程的作者。只需删除清单中的 IntentFilter 并仅实现前台调度。那么它应该这样工作。

【讨论】:

  • 太棒了。感谢您的回答和教程,非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多