下载啦、获取图片地址啦之类的,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
}