全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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的例子:https://www./article/113307.htm

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


# Android  # 7.0行为变更  # FileUriExposedException  # 变更  # Android N 7.0中报错:android.os.FileUriExposedExceptio  # Android webview 遇到android.os.FileUriExposedExcepti  # Android基于Xposed修改微信运动步数实例  # Android中利用Xposed框架实现拦截系统方法  # Android中Xposed框架篇---修改系统位置信息实现自身隐藏功能实例  # Xposed插件开发入门详解  # 您的  # 也要  # 推荐使用  # 要在  # 这段  # 跑到  # 希望能  # 来自于  # 如图  # 当我们  # 谢谢大家  # 最简单  # 解决方法  # 贴上  # 经常会  # 可以自动  # 则应  # 应用程序  # 出现故障  # 访问权限 


相关文章: 网站制作说明怎么写,简述网页设计的流程并说明原因?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  定制建站哪家更专业可靠?推荐榜单揭晓  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在Tomcat中配置并部署网站项目?  如何通过二级域名建站提升品牌影响力?  如何通过FTP服务器快速搭建网站?  如何用花生壳三步快速搭建专属网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  长沙做网站要多少钱,长沙国安网络怎么样?  建站之星24小时客服电话如何获取?  图册素材网站设计制作软件,图册的导出方式有几种?  制作网站的公司有哪些,做一个公司网站要多少钱?  建站之星安装失败:服务器环境不兼容?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何用美橙互联一键搭建多站合一网站?  如何配置IIS站点权限与局域网访问?  常州企业建站如何选择最佳模板?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  建站主机如何选?高性价比方案全解析  如何在Windows 2008云服务器安全搭建网站?  如何获取开源自助建站系统免费下载链接?  建站主机选虚拟主机还是云服务器更好?  想学网站制作怎么学,建立一个网站要花费多少?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  建站主机如何安装配置?新手必看操作指南  建站之星如何实现PC+手机+微信网站五合一建站?  太原网站制作公司有哪些,网约车营运证查询官网?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  微信小程序 input输入框控件详解及实例(多种示例)  潮流网站制作头像软件下载,适合母子的网名有哪些?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何用IIS7快速搭建并优化网站站点?  建站主机是什么?如何选择适合的建站主机?  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  网站制作免费,什么网站能看正片电影?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何快速搭建高效可靠的建站解决方案?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何配置WinSCP新建站点的密钥验证步骤?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  设计网站制作公司有哪些,制作网页教程?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  如何通过西部建站助手安装IIS服务器?  如何在橙子建站中快速调整背景颜色?  如何选择PHP开源工具快速搭建网站?  php json中文编码为null的解决办法 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。