android-解决 Android N 上 报错:android.os.FileUriExposedException
解决 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相关推荐
- 解决 Android N 7.0 上 报错:android.os.FileUriExposedException
解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appN ...
- Android已申请动态权限报错,Android 读取或者写入U盘时,报错:Permission denied
** 以下所有操作的前提是: android 系统已经root ** 最近在将文件拷贝到U盘时总是 写入失败(Permission denied) 程序清单中已经加入了权限 并且动态申请了权限 pri ...
- Unity Android解决信息流广告关闭报错
Unity接一些原生Andorid的SDK时,经常会出现这个错: W/System.err: android.view.ViewRootImpl$CalledFromWrongThreadExcept ...
- android 解决 undefined reference to 报错
在jni中写了一个inline函数.编译时报错undefined reference to. 仔细检查了下,我已经在c文件前面定义了这个函数. inline const char *checkJump ...
- 一种解决Android studio 3.0 Build报错的方法
一种解决Android studio 3.0 Build报错的方法 参考文章: (1)一种解决Android studio 3.0 Build报错的方法 (2)https://www.cnblogs. ...
- android override报错,android @override 报错解决方案
android @override 报错解决方案 现象: ... java: 1801: method does not override a method from its superclass @ ...
- 运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView
运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView 先上代 ...
- android项目模块导入eclipse编译报错,android中studio导入eclipse项目报错怎么办
android中studio导入eclipse项目报错怎么办 发布时间:2020-07-15 17:34:45 来源:亿速云 阅读:96 作者:清晨 这篇文章将为大家详细讲解有关android中stu ...
- 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 ...
- android 解决小米手机上选择照片路径为null的问题
之前做了一个获取相册选择图片的功能,后来测试人员在小米的手机 测试时出现崩溃现象.自己就在网上查找资料,发现是小米的获取图片路径的代码与其他的手机不一样,于是修改了代码,解决了这个问题,这里记录一下. ...
最新文章
- [JS] for-each和map()的区别
- JMS Java消息服务(Java Message Service)
- 详解华为交换机iStack特性
- javafx 表单_JavaFX 2:创建登录表单
- SSH农产品销售系统设计与实现答辩PPT免费下载
- 操作系统—基本地址变换机构
- Eclipse快捷键收集
- thinkphp sql查询条件 一个字段多个限制条件
- eclipse中xml文件报错异常处理
- React开发中常见问题和 Warning
- DB2错误码sqlcode对应表
- Windows下U盘无法格式化原因及解决办法:Windows无法完成格式化
- 轻健身餐的市场前景如何?如何选择一个投资小、美食和健身餐清淡的品牌?
- Entry name ‘res/drawable-xhdpi-v4/ic_launcher.png‘ collided
- 去爱一个无缘无故责备你的人,你就学到了生命的艺术。
- 垃圾回收篇~~垃圾回收概述
- CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM开源项目收藏
- 原创:Spark中GraphX图运算pregel详解
- 漂流幻境服务器文件,飘流幻境 飘流幻境常用合成资料汇总
- Matlab画x=a,y=b直线