android 7.0文件读写权限配置

在gradle中指定applicationId,这里也会跟着变了AdroidManifest.xml

android:authorities="${applicationId}.fileProvider"
 
            
res/xml/rc_file_path.xml 文件的名字没有要求,只要放在xml文件夹下面就可以了



    

paths这个元素内可以包含以下一个或多个

对应内部内存卡根目录:Context.getFileDir() + /path/

对应应用默认缓存根目录,物理路径相当于Context.getCacheDir() + /path/



对应外部内存卡根目录,物理路径相当于Environment.getExternalStorageDirectory() + /path/



对应外部内存卡根目录下的APP公共目录,物理路径相当于Context.getExternalFilesDir(String) + /path/



对应外部内存卡根目录下的APP缓存目录,物理路径相当于Context.getExternalCacheDir() + /path/




拍照:

//创建图片存放file
File imgFile = new File("照片存放目录");
Uri uri;
//根据当前系统版本决定使用哪个api,N是Android7.0的代号
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//第一个参数是上下文,第二个参数来自清单文件,必须完全一样,第三个参数为上面创建的照片file
    uri = FileProvider.getUriForFile(this, "${applicationId}.FileProvider", imgFile);
} else {
    //Android7.0还用原先的api
    uri = Uri.fromFile(imgFile);
}
//设置拍照后保存目录
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

应用安装
 

//创建安装包file
File apkFile = new File(path);
Uri uri;
//根据当前系统版本决定使用哪个api,N是Android7.0的代号
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
	uri = FileProvider.getUriForFile(context, "{applicationId}.FileProvider", apkFile);
} else {
    //Android7.0还用原先的api
    uri = Uri.fromFile(apkFile);
}
//当前代码在Activity里则下面这句可省略
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//授权Intent读取URI和写URI的权限
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.setDataAndType(uri,"application/vnd.android.package-archive");
context.startActivity(intent);

 

 

 

 

 

 

 

你可能感兴趣的:(android 7.0文件读写权限配置)