我有一个我发布的应用,它有类似的东西:
requestStoragePermission();
和功能:
private void requestStoragePermission(){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},STORAGE_PERMISSION_CODE);
}
@Override //user response
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == STORAGE_PERMISSION_CODE){
//If permission is granted
if(grantResults.length >0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
//Displaying a toast
String string = getString(R.string.permissionOk);
Toast.makeText(this,string,Toast.LENGTH_LONG).show();
}
else{
//Displaying another toast if permission is not granted
String string = getString(R.string.permissionError);
Toast.makeText(this,string,Toast.LENGTH_LONG).show();
}
}
}
它在Android 6上运行正常...但是如何在android 4上进行解释,例如,它不需要权限?这是一种不好的做法吗?
答案 0 :(得分:3)
在API级别上,用户不需要授予危险权限,请求该权限不会弹出用户的对话框,并自动授予权限。这仍然符合Google的安全政策,因为对于这些API级别,用户必须在安装过程中授予权限。
有些人会告诉您检查代码中的API级别,如果它低于23,则只请求权限。这只是代码已在内部执行的额外层,从而增加了代码的复杂性。你不必这样做。
答案 1 :(得分:1)
没有办法在android 4中请求persmission。
你只需要在android-manifest文件中添加权限,一切都将被处理。
但是,请确保在这些版本中未执行您的请求权限代码。为此使用类似:
if(Build.VERSION.SDK_INT<23){
//DoNOtRequestPersmissions
}
答案 2 :(得分:0)
在我的项目中,为了请求权限,我通常有一个我称之为arePermissionsGranted()
的函数。在该函数中,如果API级别低于23,则会自动显示“授予权限”,因为您不需要请求它们。如果API级别为23或更高,它会检查是否已授予权限,如果没有,则请求它们。