当您的应用程序被积极使用时,让另一个应用程序进行关键的 NFC 交互

问题描述 投票:0回答:1

安卓问题

主应用程序的要求:

假设我有一个 Android 应用程序 (MainApp),它托管一个具有以下职责的

Activity

  1. 通知另一个应用程序 (CriticalNfcApp) 开始侦听 NFC 标签。
  2. 显示从 CriticalNfcApp 收到的结果。
  3. 提供到MainApp其他部分的导航,并通知CriticalNfcApp何时停止侦听 NFC 标签。
  4. CriticalNfcApp的监听模式期间,MainApp需要保持在前台,因为它协调与CriticalNfcApp的交互。

CriticalNfcApp 的要求:

  1. 开始监听 NFC 标签并读出一些关键信息。
  2. 由于其任务的关键性质,CriticalNfcApp需要:
    • 获得认证。
    • 在单独的进程中运行。
    • 隔离在单独的应用程序中。

限制:

  • CriticalNfcApp 与 NFC 卡执行多次敏感交互(收发),因此此交互必须保留为 CriticalNfcApp 的一部分,并且不能移动到 MainApp
  • 虽然在 NFC 监听期间可以很容易地将 CriticalNfcApp 放在前台并带有
    Activity
    ,并在结果可用或 CriticalNfcApp 中止时将其关闭,但这不是一个选项。 用户必须始终能够导航到 MainApp 的其他区域,而无需先关闭 CriticalNfcApp
    Activity

技术问题:

是否可以实现两个应用程序系统:

  • MainApp Activity 位于前台,并且
  • CriticalNfcApp在后台运行,监听 NFC 交互并将相关非关键数据传回MainApp

挑战:

  1. 最初,我想在

    CriticalNfcApp
    项目中使用ForegroundService,该项目托管一个
    NFCAdapter
    。然而:

    • NFCAdapter
      仅支持通过传递
      Activity
      的实例来创建,所以这似乎不起作用。
  2. 另一个想法是在屏幕顶部创建一个不可见的小

    Activity
    ,不显示任何内容并实例化
    NFCAdapter.enableReaderMode(Activity,....)
    。然而:

    • 一旦 MainApp
      Activity
      中有一些交互,这可能会进入后台并暂停或停止。这似乎也不是一个可行的方法。

问题:

  1. 有人对这个描述的星座有工作方法吗?
  2. 有什么想法可以让这成为可能吗?
  3. 实现这一目标的架构会是什么样子?
android android-activity architecture nfc foreground-service
1个回答
0
投票
  1. 不,不太可能(我唯一能想到的就是在 Android 10 及更高版本的设备上使用 Multi-resume,并且设备上有足够大的屏幕来支持此操作)。
  2. 带有您自己的系统 NFC 服务的定制 Android ROM
© www.soinside.com 2019 - 2024. All rights reserved.