我有一个应用程序来获取具有权限的用户位置。我的目标API = 25 btw
一旦我获得许可,它就不再要求我获得请求许可了。
我已经通过调试检查了我的hasCoarseLocationPermission
,hasFineLocationPermission
在获得许可后始终返回0(已授予)。
但是如果我再次清除请求权限的应用程序数据(返回-1)。但是我总是想在打开应用程序时请求权限(必须返回-1而不是0)。我该怎么办?
提前致谢。
int hasCoarseLocationPermission=ContextCompat.checkSelfPermission(Kirala3.this, Manifest.permission.ACCESS_COARSE_LOCATION);
int hasFineLocationPermission = ContextCompat.checkSelfPermission(Kirala3.this, Manifest.permission.ACCESS_FINE_LOCATION);
我也尝试过使用PermissionChecker函数,但它返回相同的值(0)。
答案 0 :(得分:1)
尝试使用ActivityCompat
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
答案 1 :(得分:0)
使用此功能检查位置许可
public boolean isLocationPermissionEnabled() {
return !(Build.VERSION.SDK_INT >= 23 &&
ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(mActivity, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED);
}
答案 2 :(得分:0)
要求用户获取权限不是应用程序应该在每次启动时执行的操作。应用程序获得权限后,即具有权限,直到用户撤消该权限。你所描述的内容听起来是正确的:
checkSelfPermission
并返回PERMISSION_DENIED
checkSelfPermission
(这正是应该执行的操作。)现在返回的值为PERMISSION_GRANTED
。这是预料之中的。不需要用户提出新的权限请求。checkSelfPermission
返回PERMISSION_DENIED
,应用必须再次请求用户许可。您可能会发现此演讲很有帮助:https://youtu.be/WGz-alwVh8A
您可能还会发现此权限帮助程序库非常有用:https://github.com/hiqes/andele