美文网首页android收录
Android7.0系统新特性

Android7.0系统新特性

作者: 徐大哈_401d | 来源:发表于2018-05-14 10:42 被阅读17次

    在android7.0上,我们需要在应用内实现更新apk并且安装包的时候,无法再像之前那样了。随着Android版本越来越高,Android对隐私的保护力度也越来越大。比如:Android6.0引入的动态权限控制(Runtime Permissions),Android7.0又引入“私有目录被限制访问”,“StrictMode API 政策”

    “私有目录被限制访问“ 是指在Android7.0中为了提高私有文件的安全性,面向 Android N 或更高版本的应用私有目录将被限制访问。

    " StrictMode API 政策" 是指禁止向你的应用外公开 file:// URI。 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现 FileUriExposedException 异常。

    7.0安装apk

    1.在AndroidManifest中注册FileProvide

    2.在xml文件夹中创建file_paths文件,来声明可以访问的路径

    name是代表别名,用来隐藏文件夹,path才是真实的子目录路径

    FileProvider所支持的几种path类型

    <files-path name="name" path="path">

    该方式提供在应用的内部存储区的文件/子目录的文件。它对应Context.getFilesDir返回的路径:eg:"/data/data/包名/files"。

    <cache-pathname="name" path="path">

    该方式提供在应用的内部存储区的缓存子目录的文件。它对应getCacheDir返回的路径:eg:“/data/data/包名/cache”;

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

    该方式提供在外部存储区域根目录下的文件。它对应Environment.getExternalStorageDirectory返回的路径:eg:"/storage/emulated/0";

    <external-files-path name="name" path="path">

    该方式提供在应用的外部存储区根目录的下的文件。它对应Context.getExternalFilesDir(String)  Context.getExternalFilesDir(null)返回的路径。eg:"/storage/emulated/0/Android/data/包名/files"。

    <external-cache-path name="name" path="path" >

    该方式提供在应用的外部缓存区根目录的文件。它对应Context.getExternalCacheDir()返回的路径。eg:"/storage/emulated/0/Android/data/包名/cache"。

    这些类型在Android手机内部存储区文件共享是可以的,但对于外置SD卡是不行的,如果你想通过FileProvider.getUriForFile()获取一个外置SD卡的Uri则会报出 

    java.lang.IllegalArgumentException- Failed to find configured root that contains

    解决办法是在file_paths文件中添加<root_path />节点

    最后,安装apk的方法

    官方文档地址:

    https://developer.android.google.cn/reference/android/support/v4/content/FileProvider

    相关文章

      网友评论

        本文标题:Android7.0系统新特性

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