【发布时间】:2016-02-25 07:49:17
【问题描述】:
我正在使用一项在启动时启动并开始检查位置更新的服务。由于Android M,一旦我在权限弹出窗口中拒绝位置访问,一旦手机启动,我的服务就会崩溃。
由于在这种情况下我没有活动,因此对 requestPermissions() 的调用返回 ClassCastException,因为我的服务 Context 无法转换为活动。
我的方法调用:
ActivityCompat.requestPermissions((Activity) mContext, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, REQUEST_COARSE_LOCATION);
到目前为止是否有任何解决方案,或者我是否必须撤销服务权限才能不在这种状态下运行。
【问题讨论】:
-
在服务中,您可以使用 ContextCompat.checkSelfPermission() 在做一些工作之前检查权限可用性。
-
@Dhaval Patel 是的,问题出在服务内部的请求权限中。如果没有活动,似乎没有办法这样做
-
也许你可以触发通知,要求用户提供权限。
-
也许您可以在将您的服务设为前台进程后尝试。
标签: android android-permissions android-6.0-marshmallow