解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()

解决方法

1、在AndroidManifest.xml中添加如下代码

<providerandroid:name="android.support.v4.content.FileProvider"android:authorities="app的包名.fileprovider"android:grantUriPermissions="true"android:exported="false"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" /></provider>

注意:
authorities:app的包名.fileProvider
grantUriPermissions:必须是true,表示授予 URI 临时访问权限
exported:必须是false
resource:中的@xml/file_paths是我们接下来要添加的文件

2、在res目录下新建一个xml文件夹,并且新建一个file_paths的xml文件(如下图)

3、打开file_paths.xml文件添加如下内容

<?xml version="1.0" encoding="utf-8"?>
<paths><external-path path="Android/data/app的包名/" name="files_root" /><external-path path="." name="external_storage_root" />
</paths>

path:需要临时授权访问的路径(.代表所有路径)
name:就是你给这个访问路径起个名字

4、修改代码适配Android N

public static void installApkFile(Context context, String filePath) {Intent intent = new Intent(Intent.ACTION_VIEW);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);Uri contentUri = FileProvider.getUriForFile(context, "com.yuneec.android.saleelfin.fileprovider", new File(filePath));intent.setDataAndType(contentUri, "application/vnd.android.package-archive");} else {intent.setDataAndType(Uri.fromFile(new File(filePath)), "application/vnd.android.package-archive");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);}context.startActivity(intent);}

1、首先我们对Android N及以上做判断;
2、然后添加flags,表明我们要被授予什么样的临时权限
3、以前我们直接 Uri.fromFile(apkFile)构建出一个Uri,现在我们使用FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileprovider", apkFile);
4、BuildConfig.APPLICATION_ID直接是应用的包名

完成以上步骤后程序就可以被正常安装了

android-解决 Android N 上 报错:android.os.FileUriExposedException相关推荐

  1. 解决 Android N 7.0 上 报错:android.os.FileUriExposedException

    解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appN ...

  2. Android已申请动态权限报错,Android 读取或者写入U盘时,报错:Permission denied

    ** 以下所有操作的前提是: android 系统已经root ** 最近在将文件拷贝到U盘时总是 写入失败(Permission denied) 程序清单中已经加入了权限 并且动态申请了权限 pri ...

  3. Unity Android解决信息流广告关闭报错

    Unity接一些原生Andorid的SDK时,经常会出现这个错: W/System.err: android.view.ViewRootImpl$CalledFromWrongThreadExcept ...

  4. android 解决 undefined reference to 报错

    在jni中写了一个inline函数.编译时报错undefined reference to. 仔细检查了下,我已经在c文件前面定义了这个函数. inline const char *checkJump ...

  5. 一种解决Android studio 3.0 Build报错的方法

    一种解决Android studio 3.0 Build报错的方法 参考文章: (1)一种解决Android studio 3.0 Build报错的方法 (2)https://www.cnblogs. ...

  6. android override报错,android @override 报错解决方案

    android @override 报错解决方案 现象: ... java: 1801: method does not override a method from its superclass @ ...

  7. 运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView

    运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView 先上代 ...

  8. android项目模块导入eclipse编译报错,android中studio导入eclipse项目报错怎么办

    android中studio导入eclipse项目报错怎么办 发布时间:2020-07-15 17:34:45 来源:亿速云 阅读:96 作者:清晨 这篇文章将为大家详细讲解有关android中stu ...

  9. Unity集成穿山甲后打包报错android:networkSecurityConfig , Picked up JAVA_TOOL_OPTIONS:-Dfile.encoding=UTF-8

    Unity集成穿山甲4.0SDK后打包报错 , /Users/-/Temp/gradleOut/unityLibrary/src/main/AndroidManifest.xml:31:3-138:1 ...

  10. android 解决小米手机上选择照片路径为null的问题

    之前做了一个获取相册选择图片的功能,后来测试人员在小米的手机 测试时出现崩溃现象.自己就在网上查找资料,发现是小米的获取图片路径的代码与其他的手机不一样,于是修改了代码,解决了这个问题,这里记录一下. ...

最新文章

  1. [JS] for-each和map()的区别
  2. JMS Java消息服务(Java Message Service)
  3. 详解华为交换机iStack特性
  4. javafx 表单_JavaFX 2:创建登录表单
  5. SSH农产品销售系统设计与实现答辩PPT免费下载
  6. 操作系统—基本地址变换机构
  7. Eclipse快捷键收集
  8. thinkphp sql查询条件 一个字段多个限制条件
  9. eclipse中xml文件报错异常处理
  10. React开发中常见问题和 Warning
  11. DB2错误码sqlcode对应表
  12. Windows下U盘无法格式化原因及解决办法:Windows无法完成格式化
  13. 轻健身餐的市场前景如何?如何选择一个投资小、美食和健身餐清淡的品牌?
  14. Entry name ‘res/drawable-xhdpi-v4/ic_launcher.png‘ collided
  15. 去爱一个无缘无故责备你的人,你就学到了生命的艺术。
  16. 垃圾回收篇~~垃圾回收概述
  17. CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM开源项目收藏
  18. 原创:Spark中GraphX图运算pregel详解
  19. 漂流幻境服务器文件,飘流幻境 飘流幻境常用合成资料汇总
  20. Matlab画x=a,y=b直线

热门文章

  1. python怎么安装包-怎么在windows下安装python第三方包
  2. python读取 .mat 文件(matlab文件)
  3. mysql数字转换中文版_MYSQL字符数字转换
  4. mysql 批量更新
  5. go map的定义和使用 键值对存储
  6. C++读写局域网共享
  7. 【Python学习】使用Pyinstaller将py文件导出为exe文件
  8. show processlist结果筛选(转)
  9. java 网络编程UDP
  10. js 输出二维数组的最大值