Android 5.1.1上未自动授予访问位置
我正在检查应用程序是否因为Android m而获得了Android 5.1.1上未自动授予访问位置,android,android-permissions,android-5.1.1-lollipop,Android,Android Permissions,Android 5.1.1 Lollipop,我正在检查应用程序是否因为Android m而获得了访问\u粗略\u位置权限。据我所知,版本低于Marshmallow的设备在安装时会自动授予所有权限 但是,如果我添加这段代码,它将在Android 5.1.1上返回false if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) 是因为我用于
访问\u粗略\u位置
权限。据我所知,版本低于Marshmallow的设备在安装时会自动授予所有权限
但是,如果我添加这段代码,它将在Android 5.1.1上返回false
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)
是因为我用于测试的设备完全禁用了所有应用程序的位置访问吗?实际上,Android minimum sdk版本21-22即5.0不需要检查权限,但我们必须在不同的手机上测试我们的应用程序,例如minimum sdk版本23即棉花糖上。您需要在应用程序外部检查权限 在开始活动中编写以下代码
//requesting Permission
private void requestingPermission(){
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_NETWORK_STATE)){
//Exaplian here why you need this permission
}
//Ask for the permission
ActivityCompat.requestPermissions(this,new String[]{
Manifest.permission.ACCESS_NETWORK_STATE, },STORAGE_PERMISSION_CODE);
}
现在添加另一个
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//checking the request code of Permission request
if (requestCode == STORAGE_PERMISSION_CODE){
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){//Toast.makeText(getApplicationContext(),"Permission Granted",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"Permission Denied",Toast.LENGTH_SHORT).show();
}
}
}
不要忘记在activity onCreate()方法中调用下面的方法
与此相反:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
== PackageManager.PERMISSION_GRANTED)
使用以下命令:
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED)
对于低于6.0的设备,如果您检查粗略位置,您将获得权限拒绝(-1)。权限访问粗略位置是否在清单中,目标API是否在API 23或更高版本上?它在清单中,targetSdkVersion为25,minSdkVersion为15Hmm非常奇怪。我不知道没有更多的代码,但作为一项工作,如果(Build.VERSION.SDK_INT
if (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED)