安卓HCE服务(Android HCE service)

2019-10-20 15:44发布

I have a HCE service which sends data to and from a NFC reader but I was wondering if I can specify the launch settings of my service. I want to specify that my service can only be called if the app is running. If the app is closed the service shouldn't be called. Is this possible or was it intended that the service can always be called?

Answer 1:

目前只能指定是否HCE服务应考虑从锁屏卡仿真或仅在用户通过了锁屏(见这里 。这不(直接)可以指定的HCE服务,才应使用而您的应用程序的活动是在前台。

背后使用的服务为目标HCE事件(和,因为它是其他NFC事件的情况下不活动)的整体思路是,HCE functionbality应随时访问,不需要活动是在前台。

你可以做的限制你的HCE服务的可用性是建立在你的应用程序的共享偏好的标志(见这个问题上,为什么共享偏好将是首选的方法),表明如果该服务被允许执行某些动作或没有。 然后,您可以查询HCE服务范围内的标志,并决定哪些功能应该可以过HCE。

另外,您也可以禁用整个服务组件(见本提问/回答 ),同时您的活动是在前台只有启用该服务:

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服务仍然响应某些命令 (例如应用程序选择等),你只阻止安全/隐私相关的命令。



文章来源: Android HCE service