android 创建读写文件权限,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);

    原文作者:周子寒
    原文地址: https://blog.csdn.net/weixin_42311301/article/details/117286115
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞