【问题标题】:How to disable NFC in specific screen(Activity or Fragment)?如何在特定屏幕(活动或片段)中禁用 NFC?
【发布时间】:2019-07-02 09:16:57
【问题描述】:

我在打开Complete action using 弹出窗口时遇到问题。当我检测到 NFC 时。我之前在清单中设置了活动,如下所示:

<action android:name="android.nfc.action.TECH_DISCOVERED" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<action android:name="android.nfc.action.TAG_DISCOVERED" />

并在 MainMactivity 中使用了NfcAdapter。但是,由于我的编程,它似乎没有发生。于是,我一一删除。并经过测试。现在,我删除了manifexts.xmlNFC相关的所有代码和设置。

但是,它仍然有效。我会称之为outer NFC,它在任何地方都很活跃。我怎样才能关闭它?或避免它?我什至不想要它的声音或振动。我不希望它起作用。

但是,我希望它在特定片段中处于活动状态。有没有可能这样表现?

【问题讨论】:

标签: android nfc


【解决方案1】:

如何关闭它?还是避免?

您需要从主线程调用该方法来禁用负责扫描和读取NFC标签的系统级NFC实现> android.nfc.NfcAdapter#enableForegroundDispatch();它将控制扫描和读取/写入 NFC 标签到您的片段/活动。

我希望它在特定片段中处于活动状态。是否有可能 这样的行为?

上述方法将帮助您实现这一目标。

当您离开您的应用程序时,您需要通过调用android.nfc.NfcAdapter#disableForegroundDispatch() 再次禁用前台调度(您刚刚为您的应用程序启用的)。

更好的方法是在片段/活动的onResume()onPause() 中挂钩这些方法调用。

【讨论】:

  • 不,它不起作用。我什至无法检测到它。 enableForegroundDispatch()disableForegroundDispatch() 无能为力。你能给我具体的例子吗?
  • @c-an 请发布您的代码。在不知道您的实现的情况下,我无法在答案中添加任何内容。
  • 好吧,我删除了所有与NFC相关的代码和设置。我还没有实现任何东西。仍然会弹出Complete action using
  • @c-an 请按照NFC Basics 文档了解内核dispatches NFC info to application layer 是如何工作的。顺便说一句,您需要在清单中添加这 3 个 NFC 意图才能使建议的解决方案起作用。
  • 我已经阅读了它,但解释似乎与Complete action using 无关。我解决问题的方法是为pendingIntent 提供SingleTop。但是,它并不总是有效。所以,我想要真正的解决方案。
猜你喜欢
  • 1970-01-01
  • 2015-12-10
  • 2018-06-07
  • 2020-04-13
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多