发布于 2017-08-24 19:08:04 | 11338 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Android移动端操作系统

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。


这篇文章主要介绍了Android 7.0行为变更 FileUriExposedException解决方法的相关资料,需要的朋友可以参考下

Android 7.0行为变更 FileUriExposedException解决方法

当我们开发关于【在应用间共享文件】相关功能的时候,在Android 7.0上经常会报出此运行时异常,那么Android 7.0以下没问题的代码,为什么跑到Android 7.0+的设备上运行就出问题了呢?,这主要来自于Android 7.0的一项【行为变更】!

对于面向 Android 7.0 的应用,Android 框架执行的 StrictMode API 政策禁止在您的应用外部公开 file:// URI。如果一项包含文件 URI 的 intent 离开您的应用,则应用出现故障,并出现 FileUriExposedException 异常。如图:

要在应用间共享文件,您应发送一项 content:// URI,并授予 URI 临时访问权限。进行此授权的最简单方式是使用 FileProvider 类。

FileProvider 类的用法:

第一步:为您的应用定义一个FileProvider清单条目,这个条目可以声明一个xml文件,这个xml文件用来指定应用程序可以共享的目录。


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.myapp">
  <application
    ...>
    <provider
      android:name="android.support.v4.content.FileProvider"
      android:authorities="com.example.myapp.fileprovider"
      android:grantUriPermissions="true"
      android:exported="false">
      <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
    </provider>
    ...
  </application>
</manifest>

在这段代码中, android:authorities 属性应该是唯一的,推荐使用【应用包名+fileprovider】,推荐这样写

android:authorities=”${applicationId}.file_provider”,可以自动找到应用包名。

meta-data标签指定了一个路径,这个路径使用resource指定的xml文件来指明是那个路径:

xml文件如下:


<?xml version="1.0" encoding="utf-8"?>
<paths>
  <external-files-path name="bga_upgrade_apk" path="upgrade_apk" />
</paths>

Uri的获取方式也要根据当前Android系统版本区分对待:


  File dir = getExternalFilesDir("user_icon");
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
      icon_path = FileProvider.getUriForFile(getApplicationContext(),
          "com.mqt.android_headicon_cut.file_provider", new File(dir, TEMP_FILE_NAME));
    } else {
      icon_path = Uri.fromFile(new File(dir, TEMP_FILE_NAME));
    }

这样问题就解决了。贴上一个安装apk适配7.0的例子:/article/17/0724/337683.html

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!



相关阅读 :
Android 7.0行为变更 FileUriExposedException解决方法
Android编程画图之抗锯齿解决方法
android webview 中localStorage无效的解决方法
android基础教程之android的listview与edittext冲突解决方法
Android Studio的中文乱码问题解决方法
Android动态添加View的问题解决方法
Android 完全退出应用程序的解决方法
android layout XML解析错误的解决方法
android不同activity之间共享数据解决方法
Android 7.0 截图曝光,视觉上更加素雅
Android 7.0 Nougat不得不知的11项新功能
Android 5.0 开机横屏修改方法
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务