【问题标题】:Service with LocationManager check for permission使用 LocationManager 的服务检查权限
【发布时间】:2015-12-07 12:23:24
【问题描述】:

我需要将位置发送到服务器。 这是我的服务类:

lm.requestLocationUpdates(PROVIDER, 600000, 0, myLocationListener);

但我不知道如何调用它,因为这需要检查权限。

请推荐?

【问题讨论】:

    标签: android service permissions locationmanager android-6.0-marshmallow


    【解决方案1】:

    检查权限不会因为您正在使用服务而改变。在服务本身上调用checkSelfPermission()

    不同之处在于您不能向用户请求许可服务。

    涵盖大多数用例的最佳解决方案是在您启动(或绑定到)服务之前检查您的活动/片段中的权限,如果您不这样做,请向用户请求权限有它。

    或者,让您的服务显示Notification,这会导致您可以请求用户许可的活动。 Activity 需要重新请求服务在此时完成其工作,因此服务知道调用 requestLocationUpdates() 是安全的。

    【讨论】:

    • 假设用户已授予所有权限,然后从 Settings-App Info 撤消了权限。在服务中如何处理?
    • @Sandeep:当用户撤销权限时,您的进程应该终止。如果您的服务在您有机会请求权限之前重新启动,请让您的服务显示Notification,这会导致您可以请求用户许可的活动。活动将需要重新请求服务以在此时完成其工作。
    • 在活动的情况下我可以检查并提示权限对话框,但在服务中如何使用它?
    • @Sandeep:因为我已经写了两次,现在将用粗体再次写,让你的服务显示一个Notification,这会导致你可以请求用户许可的活动。 Service 本身无法向用户请求权限。为此,您必须使用Activity。所以,显示一个Notification,这样当用户准备好时,用户可以点击那个Notification,你可以请求权限。
    猜你喜欢
    • 2015-12-06
    • 1970-01-01
    • 2015-05-26
    • 2010-10-09
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    相关资源
    最近更新 更多