Android 6.0和7.0版本差异 FileProvider

参阅博客 https://blog.csdn.net/g777520/article/details/89242892

我所遇到的问题是

在安卓版本下载更新6.0测试可用 ,但是在7.0版本显示下载失败 使用到ContentProvider的子类FileProvider类

在百度找到版本差异API (可以用到)

一.首先我们在清单文件注册我们的provider

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="包名.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" /> <!--7.0配置文件路径 我放在了xml下的file_paths中-->
        </provider>

二.res/xml//file_paths 这个需要自己创建自己写

在这里插入图片描述
这个就是我在xml文件里写的
name是代表生成的新uri的时候的拼接名称,path代表前面参数路径后拼接的内容

<paths  xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="app" path="/" />
</paths>

这只是我用到的,具体如下(这一段是拷贝大佬的,帖子顶上已附链接)

参数说明
files-path调用context.getFilesDir()路径下的文件 例 /data/user/0/包名/files
cache-path调用context.getCacheDir()路径下的文件 例 /data/user/0/包名/cache
external-cache-path调用context.getExternalCacheDir()路径下的文件 例 /storage/emulated/0/Android/data/包名/cache
external-files-path调用context.getExternalFilesDir(String)路径下的文件 例 /storage/emulated/0/Android/data/包名/files/Music
external-path调用Environment.getExternalStorageDirectory()路径下的文件 例 /storage/emulated/0

三.最后就是我们在代码中的使用

		Intent intent = new Intent();
		intent.setAction("android.intent.action.VIEW");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//android4.0以后加上该代码防止在安装过程中直接退出					
	if (Build.VERSION.SDK_INT >= 24) { //在这里判断我们Android版本
			intent.setDataAndType(FileProvider.getUriForFile(当前页面,"包名.fileprovider", fileInfo), "application/vnd.android.package-archive");
	 } else {
		    intent.setDataAndType(Uri.fromFile(fileInfo), "application/vnd.android.package-archive");
			}
			// 授予目录临时共享权限
			//临时读取和临时写入
			intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
						  | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
			startActivity(intent);

最后要注意provider的名字代码和清单文件一致,注意provider唯一性

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值