【问题标题】:Android HCE service安卓 HCE 服务
【发布时间】:2018-07-06 22:17:17
【问题描述】:

我有一个 HCE 服务,可以向 NFC 读取器发送数据,但我想知道是否可以指定我的服务的启动设置。我想指定只有在应用程序正在运行时才能调用我的服务。 如果应用程序关闭,则不应调用该服务。这是可能的,还是打算始终调用该服务?

【问题讨论】:

    标签: android android-service nfc access-control hce


    【解决方案1】:

    目前,您只能指定 HCE 服务是否应考虑从锁定屏幕进行卡模拟,或者仅当用户通过锁定屏幕时(请参阅here。不能(直接)指定 HCE 服务仅应在您的应用的 Activity 处于前台时使用。

    使用服务作为 HCE 事件的目标(而不是像其他 NFC 事件那样的活动)背后的整个想法是,HCE 功能应该随时可以访问,并且不需要活动在前台。

    限制 HCE 服务可用性的方法是在应用的共享首选项中设置一个标志(请参阅 this question,了解为什么共享首选项是首选方法),指示是否允许该服务执行某些行动与否。然后,您可以在 HCE 服务中查询该标志,并决定 HCE 应该提供哪些功能。

    或者,您可以禁用整个服务组件(请参阅此question/answer)并仅在您的活动处于前台时启用该服务:

    public void onResume() {
        super.onResume();
    
        PackageManager pm = getPackageManager();
        pm.setComponentEnabledSetting(new ComponentName(this, "com.example.app.HceService"),
                                      PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                                      PackageManager.DONT_KILL_APP);
    }
    
    public void onPause() {
        super.onPause();
    
        PackageManager pm = getPackageManager();
        pm.setComponentEnabledSetting(new ComponentName(this, "com.example.app.HceService"),
                                      PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                                      PackageManager.DONT_KILL_APP);
    }
    

    请注意,我建议您的 HCE 服务仍然响应某些命令(例如应用程序选择等),并且您只阻止安全/隐私相关的命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2013-03-31
      • 2015-08-16
      相关资源
      最近更新 更多