如何从服务

时间:2017-04-01 14:11:30

标签: android service permissions locationmanager

我正在实施一项使用LocationManager获取和使用平板电脑位置的服务。此服务是从活动开始和停止的。

最新的Android要求在运行时请求权限。现在,我每次使用requestPermission onCreate checkSelfPermission,每次使用一些位置管理器功能,添加requestPermission函数并覆盖{{}时,我就设法对活动执行此操作{1}}。

效果很好。

现在我的服务需要做同样的事情,但这些功能似乎只适用于活动。 如何激活服​​务中的权限?

以防万一,我已经在启动和停止服务的活动中询问了权限

2 个答案:

答案 0 :(得分:1)

  

如何激活服​​务中的权限?

您无法从服务请求权限。应明确询问用户在UI中应该可以看到哪些权限。但是,您可以从活动中获得许可,如果成功,您可以访问这些资源,直到用户再次关闭您的应用的权限。

  

你怎么能转移"这些服务的权限?

为整个应用分配了权限,因此您无需将其从一个活动转移到另一个活动或从一个活动转移到服务。获得活动权限后,该权限将分配给整个应用程序,您的服务可以在之后访问资源。干杯:)

答案 1 :(得分:1)

  

如何激活服​​务中的权限?

你不是。您可以激活(即请求)活动的权限。这是不容谈判的。

理想情况下,您在活动启动服务之前请求权限,或执行最终会导致服务启动的内容(例如,使用JobScheduler安排作业)。

如果您确定您的服务不再具有必要的权限 - 可能是用户从“设置”中撤消了这些权限 - 您可以引发Notification,将用户引导至您重新请求权限的活动。

技术上,服务可以启动请求权限的活动。通常情况下,这不是一个好主意,因为你可能不知道什么用户在那一刻做,用户可能会不高兴,有你打断他们拥有此权限的要求。