安卓6.0以上由于添加了权限的控制,所以在6.0以上的机器运行时需要对权限进行特别的处理。
下面记录一些在项目中使用的场景,以后需要的再进行补充:
需要注意的一点:对于一个权限组来说,如果对一个组中的某个权限授予app访问,则默认改组的所有权限都被授予。
1.在进行对存储卡进行读写操作时,需要设置读取或写入权限,
if(Build.VERSION.SDK_INT>=23){
if(ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
NewUpdateAppManager.WRITE_PERMISSION_AGREE);
}else{
//正常操作
}
2.在调起相机时,也要授予允许访问相机权限:
Manifest.permission.CAMERA
3.在进行自动更新安装新版本apk时,在7.0以上机器要注意,需要对某个路径临时授予读取权限,7.0以下没有这些限制
private void installApk(File file) {
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri;
if(Build.VERSION.SDK_INT>=24){
uri=FileProvider.getUriForFile(context,"com.zjbl.business.fileprovider",file);
}else{
uri=Uri.fromFile(file);
}
intent.setDataAndType(uri,
"application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
context.startActivity(intent);
((Activity) context).finish();
}
4.安卓7.0以上的官网的权限更改
https://developer.android.com/about/versions/nougat/android-7.0-changes.html