【发布时间】:2017-02-27 06:27:00
【问题描述】:
我正在尝试访问用户的位置,只是整理出事情的权限方面。所以我的理解是,在 23 及以上,无论清单如何,用户都必须授予权限。
所以对于旧版本,我在清单中有这样的内容:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
对于较新的 >= 23,我在显示对话框之前进行这样的测试:
// Check for runtime location permissions
private boolean hasRunTimeLocationPermission() {
int courseLocationPermission = ContextCompat.checkSelfPermission(getActivity(),Manifest.permission.ACCESS_COARSE_LOCATION);
return (courseLocationPermission == PackageManager.PERMISSION_GRANTED );
}
我理解的方式应该是第一次返回 false,但它返回的是 true。
用户是否真的必须禁用定位服务,或者它被认为是“危险的”并且必须在第一时间获得批准?
另外我正在使用一个新的模拟器 api 23,当我查看位置权限时,它说没有应用程序请求位置。
感谢您的帮助
【问题讨论】:
-
您是否在片段中检查这种情况?
-
是的,我是这样会改变它吗?
-
在片段的on start方法中
-
@MadhukarHebbar 谢谢,该应用的权限设置为开启。我以为这不是默认的?
-
@MadhukarHebbar 这是导致问题的原因 谢谢!由于某种原因,模拟器已经开始将该权限设置为true。你知道那会发生什么吗?
标签: android android-6.0-marshmallow android-permissions