我有一个 HCE 服务,可以向 NFC 阅读器发送数据,但我想知道是否可以指定我的服务的启动设置。我想指定只有在应用程序正在运行时才能调用我的服务。如果应用程序关闭,则不应调用该服务。这是可能的还是打算总是可以调用该服务?
1784 次
1 回答
1
目前,您只能指定 HCE 服务是否应考虑从锁定屏幕进行卡模拟,或者仅当用户通过锁定屏幕时(请参阅此处。不能(直接)指定仅在以下情况下使用 HCE 服务您的应用程序的活动在前台。
使用服务作为 HCE 事件的目标(而不是像其他 NFC 事件那样的活动)背后的整个想法是 HCE 功能应该随时可以访问,并且不需要活动处于前台.
限制 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 服务仍然响应某些命令(例如应用程序选择等),并且您只阻止与安全/隐私相关的命令。
于 2014-08-10T08:16:40.760 回答