从应用程序中禁用 NFC 功能

Disable NFC functionality from within the app

我要解决的问题如下:

NFC 标签将触发我的应用程序,我从该应用程序启动另一个应用程序。有时会发生的情况是,NFC 标签会移动并且会被 phone "re discovered" 并再次启动我的应用程序。 NFC标签的移动是我无法控制的。

这真的破坏了体验。

我最想做的是,一旦我的应用程序启动,NFC 触发将被禁用或暂停,一旦应用程序关闭 (OnDestroy()),我将启用/取消暂停 NFC 功能。

我找不到如何做到这一点,非常感谢您的帮助。如果您有另一种(代码相关的)方法来解决这个问题,这也很好。

几年前我注意到了这个post:NFC disable adapter 但我希望有另一种解决方案,作为系统应用程序不是一个选项,提示用户禁用 NFC 同样糟糕...

提前致谢。

您可以创建一个 activity-别名来处理意图,disable it 而您的 activity 是 运行 并在它被销毁时重新启用它。

您假设您可以安全地关闭 phone 的一项重要功能,并禁用依赖它的任何其他服务 and/or 应用程序。

这当然是错误的。您应该只对自己的应用做出假设。

所以你真正想做的是禁用重新启动。这可以通过多种方式完成:

  1. 控制您的主要 Activity 的 launch mode,从而控制您的整个应用程序。
  2. 通过监控 NFC 状态以及您的应用程序的 Service 正确处理 NFC 意图。根据@Michael 的评论 - 由于您只能将 NFC 意图与 Activity 相关联 - 您必须创建一个非 ui Activity(不调用 setContentView) 作为这个 ServiceBroadcastListener
  3. Tag your app,如@Tristan 所建议。