Android7.0文件访问权限

作者: Only凹凸曼 | 来源:发表于2016-11-02 17:32 被阅读1853次

## 背景

在Android N之后大家会发现一些奇奇怪怪的问题,这里也是自己在开发的时候遇到的,做一个记录:

情况出现在,把自己的手机刷成了Android N,然后,坑就来了,发现调用相册的地方崩溃了,提示FileUriExposedException,后面在下载应用然后调用系统安装的地方也出现了这个错误,最后发现是Android N对于权限和安全做的更加严格。

现在我们就以调用系统的来安装APK为例子来讲一下:

首先文件共享要采用FileProvicer的形式来传递给第三方应用,不能使用之前的file路径来简单传递:

那么FileProvider怎么生成呢?

1、先编写一个xml来标识你要共享的文件夹:

 <paths>

<external - path path="test" name="abc" />

</paths>

文件的名字没有要求,只要放在xml文件夹下面就可以了

要分享的文件位置总共有三个:

<files - path />代表的根目录:Context.getFilesDir()

<external - path />代表的根目录: Environment.getExternalStorageDirectory()

<cache -  path />代表的根目录: getCacheDir()

每一个标签里面的name字段表示的是一个共享给第三方应用的表示,path表示的是要共享的目录

2、在AndroidManifest.xml里面注册FileProvider

android:name="android.support.v4.content.FileProvider"

android:authorities="com.xxx.authority.fileprovider"

android:exported="false"

android:grantUriPermissions="true">

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/file_paths" />

其中android:resource="@xml/file_paths"里面的file_paths对应自己的xml的名字就可以了

3、就是在使用的地方给第三方提供FileProvider

比如我的是要调用安装apk的方法,所以:

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

Uri bmpUri = FileProvider.getUriForFile(context, context.getPackageName() + ".authority.fileprovider", new File(apkPath));

intent.setDataAndType(bmpUri, "application/vnd.android.package-archive");

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

context.startActivity(intent);

好了,这就是最后的使用方法了

相关文章

  • Android7.0以上版本打开附件失败问题

    简介:   Android7.0修改了文件权限,导致访问内部文件通过Uri.fromFile(file)构建URI...

  • app升级安装

    android7.0后文件的访问权限提高了,不能直接使用file://的方式来共享文件了,应该使用content:...

  • Android7.0权限适配

    谷歌在Android7.0(API 24)做了一些权限的更改,对用户私有目录或私有文件的访问和共享做了限制,具体可...

  • Android7.0文件访问权限

    ## 背景 在Android N之后大家会发现一些奇奇怪怪的问题,这里也是自己在开发的时候遇到的,做一个记录: 情...

  • Permission denied

    拒绝访问查看权限用户的权限 访问文件所需的权限

  • 20170724 文件权限

    概要 linux文件权限linux文件特殊权限ACL 访问控制列表 一、linux文件权限 (一)linux文件属...

  • Linux中文件/目录的特殊权限

    每一个文件和目录都有自己的访问权限,访问权限确定后,用户能否访问文件或者目录。最为熟知的一个文件或目录拥有三种权限...

  • Android WebView 调用系统拍照和相册

    由于本应用版本较低 未写Android7.0以上权限适配和文件读取适配; mWebView.setWebViewC...

  • Android6.0~9.0适配

    1、Android6.0 危险权限动态申请 2、Android7.0 2.1 应用间文件共享 2.2 APK签名 ...

  • 基本命令

    4.2.3 改变访问权限命令 文件或目录的访问权限分为:读\写\可执行.以文件为例,只读权限表示只允许读它的内容,...

网友评论

本文标题:Android7.0文件访问权限

本文链接:https://www.haomeiwen.com/subject/mkovuttx.html