android 7.0以上 FileProvider的使用方法

下载啦、获取图片地址啦之类的,7.0以上的Fileprovider使用方法:

 

第一步、声明文件:
在清单文件AndroidManifest.xml中添加如下代码,

<application>

......

<provider
     android:name="android.support.v4.content.FileProvider"
     android:authorities="com.project.purse.fileprovider"
     android:exported="false"
     android:grantUriPermissions="true">
     <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/file_paths"/>
</provider>

......

</application>

其中的file_paths需要在res中的xml文件下,新建xml文件,文件名为:file_paths

 

第二步,配置file_paths.xml文件内容:

<?xml version="1.0" encoding="utf-8"?>
<paths>

    <external-path path="" name="download"/>

    <external-path path="" name="Pictures"/>

</paths>

上述配置中,说明零食存储区域为根目录,相当于

Environment.getExternalStorageDirectory()

下的download文件夹和Pictures文件夹是共享的,其中的Pictures对应上一篇文章: android WebView调起摄像头并上传(兼容7.0以上)、返回重定向问题。

下载app等的使用方法:

File saveFile = new File(Environment.getExternalStorageDirectory(), "xiazai.apk");

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    Uri contentUri = FileProvider.getUriForFile(context, "com.***.***.fileprovider", saveFile);
    intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
    intent.setDataAndType(Uri.fromFile(saveFile), "application/vnd.android.package-archive");
}

其中的参数2:如果你的包名为:com.project.bauduu,那参数2的值为:com.project.bauduu.fileprovider

 

图片的使用方法为:

String filePath = Environment.getExternalStorageDirectory() + File.separator
                        + Environment.DIRECTORY_PICTURES + File.separator;
String fileName = "IMG_" + DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg";

File fileUri = new File(filePath + fileName);
imageUri = Uri.fromFile(fileUri);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    imageUri = FileProvider.getUriForFile(getActivity(), "com.***.***" + ".fileprovider", fileUri);//通过FileProvider创建一个content类型的Uri
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值