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

Android报错处理:FileUriExposedException 报错信息:CrashHandler.java:uncaughtException:66:android.os.FileUriExposedException报错场景:调用系统的相机。测试机为Android7.0系统。开发工具为AndroidStudio3.0.1先看看Activity中原来的代码:(报错代码)// if (ContextCompat.checkSel... 阅读详情

文章转发自 csdn博客  Sean_帅恩  

解决 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中添加如下代码

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="app的包名.fileProvider"
    android:grantUriPermissions="true"
    android:exported="false">
    <meta-data
        android: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

Intent intent = new Intent(Intent.ACTION_VIEW);
//判断是否是AndroidN以及更高的版本
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    Uri contentUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", apkFile);
    intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
    intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}

startActivity(intent);


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

4、BuildConfig.APPLICATION_ID直接是应用的包名


文章转发自 csdn博客  Sean_帅恩  



学习累了,休息一下吧!关注微信公众号“休闲1刻”,或扫描下方二维码,休闲段子等着你哦~













基于YOLOv5的仪表读数识别系统:从检测到识别的完整解决方案 随着工业自动化水平的不断提高,仪表读数识别技术在电力系统、石油化工、智能制造等领域发挥着越来越重要的作用。本文提出了一种基于YOLOv5的仪表自动读数识别系统,该系统能够有效区分指针式和数字式仪表,并实现高精度的读数识别。我们详细介绍了系统的整体架构、数据集构建、模型训练策略以及用户界面设计,并提供了完整的代码实现。实验结果表明,本系统在仪表检测和读数识别任务上均取得了优异的表现,为工业现场的自动化监控提供了可靠的技术支持。关键词:仪表读数识别;YOLOv5;目标检测;深度学习;工业自动化。 阅读详情

相关推荐

[数据转换]将NetCDF(NC)文件转换成单个GeoTIFF文件

有时候要提取tif格式数据中的气象数据,但从气象网站上下载的却是NC格式的文件。这就需要我们将NC格式的文件转换成TIF格式的文件。

G_sea_young的博客 1004

android 7+(api 24+)file_paths.xml记录

对应关系 external

贵在坚持 961

Win11系统重装全记录:从备份Office激活到搞定RAID阵列,我的微星笔记本复活记

本文详细记录了Win11系统重装的完整过程,从数据备份到RAID阵列配置,特别针对微星笔记本的特殊硬件驱动问题提供了解决方案。文章涵盖了Office激活状态备份、BIOS设置、驱动安装顺序等关键步骤,帮助用户顺利完成系统重装并优化性能。

weixin_31421613的博客 309

我对FileProvider和file_paths.xml文件的理解

记录我个人对fileProvider作用的理解

qq_42072638的博客 2509

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1581

智能优化电池:基于单片机的电池管理系统

设计简介: 本设计是基于单片机的电池管理系统,主要实现以下功能: 可通过LCD1602显示温度、电压电流值; 可通过按键调整温度、电压和电流的阈值; 用ADC0832将模拟量转换为数字量。 标签:51单片机、LCD1602、ADC0832 效果图: 总体资料: 原理图: 软件设计流程: 系统框图: 本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成电动汽车的电池管理的整个系统,...

专注单片机实战教学,分享单片机学习资料 375

idea 开发 mybatis 方法找不到

默认情况,idea 打包不会 把 src/main/java 中的 非class 文件打包进去, 所以 要在pom 的配置文件中加入 配置: <build> <resources> <resource> <directory>src/main/java</directory> <includes> ...

hao5511555的博客 1194

深度解构事务码 SQF:Support Query Framework 与 ABAP 静态分析实战

某制造企业在年度审计前,需要确认自定义发票过账程序 ZFI_INV* 系列是否存在硬编码公司代码与未捕获异常。技术团队在字段填入ZFI_INV*后,勾选与规则,执行扫描。SQF 生成的 ALV 报告列出 42 个警告,其中 17 条与抛出 CX_SY_NO_HANDLER 相关,8 条涉及动态 SQL 注入风险。结果导出至 Excel 供开发整改,并在 ATC 阶段验证修复。此过程较手工逐个执行 Code Inspector 节省超 80 % 时间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 216

【安卓APP】从零开始的安卓桌面小应用(环境配置问题合集篇)

本篇主要描述创建一个空白模板遇到的各种问题 1.由于AS(Android Studio)版本有点低,有些东西和网上教程不太符合,建议动手先安装最新版本。 先选一个最简单的 遇到以下报错内容: Call requires API level 3 (current min is 1) Call requires API level 4 (current min is 1) 解决方法: (1)由于javaSDK版本很低,用的是1.8.0版本,因此很多功能不兼容,下一个最新的15.0版本就可以了。 (2

灵境引路人 458

【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

手把手写深度学习(27):如果获得相机位姿态的plücker embedding?以RealEstate10K为例

用plücker embedding表示相机的位姿是一种非常常用的方法,这篇博客以RealEstate10K数据集为例子,详细讲解如何从相机的轨迹坐标中获得plücker embedding,用于下一步模型的学习。

沉迷单车的追风少年 2239

Android 7.0 fileprovider使用以及遇到的坑

Android7.0以后对系统文件访问权限校验更加严格。 以前使用的file://模式会抛出错误 FileUriExposedException错误,7.0以后需要配置fileprovider来进行文件访问。 当前项目中的使用场景: 1.相机拍照 2.调用系统安装APK 使用 1.因为Android主工程跟依赖工程都使用provider的时候可能会产生冲突,一般需要自定义一个provider继承系统FileProvider,在AndroidMainest.xml中属性的name使用自定义的pro

VictorFactory的博客 1243

【WRF数据准备】土地利用数据-MODIS MCD12Q1数据下载及制备

【WRF数据准备】MODIS静态地理数据下载及制备

WW、forever的博客 3413

安卓7.0报错android.os.FileUriExposedException

最近在开发过程中遇到了这样一个错误,android.os.FileUriExposedException: file:///storage/emulated/0/xxx/xxx.doc exposed beyond app through Intent.getData() 出现这个问题是在使用Intent附带uri打开sd卡下的doc文件,而在Android 7.0后,应用使用StrictMo

king的专栏 868

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

升级安装APK兼容Android7.0,解决FileUriExposedException

我们在开发app时避免不了需要添加应用内升级功能。当app启动时,如果检测到最新版本,将apk安装包从服务器下载下来,执行安装。 安装apk的代码一般写法如下,网上随处可以搜到 public static void installApk(Context context, File file) { Intent intent = new Intent(Intent.ACTION_VI

ruancoder的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

解决 Android N 上 打开摄像头时报错:android.os.FileUriExposedException

u013006960的博客 671

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

开发中碰到的问题:Android 7.0 更新APK在安装时的报错 android.os.FileUriExposedException: file:///storage/emulated/0/And

1、在AndroidManifest.xml中添加如下代码                android:name="android.support.v4.content.FileProvider"                android:authorities="app的包名.fileProvider"                android:gra

苦涩的风的博客 5万+

android android.os.fileuriexposedexception,Android N 7.0中报错: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(),通过查找相关的资料终于找到了解决的方法,下面分享给大家,话不多说了,来一起看...

weixin_39933713的博客 471

安卓学习笔记---调用相机功能在安卓7.0以上报错android.os.FileUriExposedException

解决方法: 1. 在AndroidManifest.xml中添加如下代码 <!-- 注意: authorities:app的包名.fileProvider grantUriPermissions:必须是true,表示授予 URI 临时访问权限 exported:必须是false resource:中的@xml/file_paths是我们接下来要添加的文件 --> pro

紫色飞鱼儿的博客 339

android android.os.fileuriexposedexception,Android7.0调用系统相机或相册时报错android.os.FileUriExposedException...

在Android7.0的系统上调用系统相机拍照或者进相册选择图片时,会报如下错误: android.os.FileUriExposedException: ******** exposed beyond app through Intent.getData()产生原因其实不仅是调用相机和相册,只要是访问文件,都会出现这个错误,其原因是Android 7.0 做了一些系统权限更改,为了提高私有文件的...

weixin_39686634的博客 432

android.os.FileUriExposedException 自动安装APK报错 5分钟搞定Android 7.0+ FileProvider

5分钟搞定 Android 7.0+ fileprovider 应用间文件共享

hanye2020的博客 895

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

在测试vivo 7.0 上测试更新软件,出行错误android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()解决方法 在AndroidManifest.xml中添加如下代码 <provider

Kenway090704的博客 611

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

解决方法:、 1、在AndroidManifest.xml中添加如下代码 <provider android:name="android.support.v4.content.FileProvider" android:authorities="app的包名.fileprovider" android:gra...

丿灬安之若死 1万+

7.0以上android.os.FileUriExposedException: file:///storage/emulated/0/xxx.xxx exposed beyond app的bug解决

公司开发的Android屏幕设备升级到了11,在进行apk升级进行存储本地的过程中报错 1.首先将apk下载到项目的专属文件夹中,Android/data/包名/ 2.上面这个错误就是读取该文件的Uri的时候报的错。 从 Android N 开始,将不允许在 App 间,使用 file:// 的方式,传递一个 File ,(之前的uri的获取方式)否者会抛出 FileUriExposedException的错误,会直接引发 Crash。 那么解决方案为: 1.首先在AndroidManifest.

domyself918的专栏 8120

Android开发:解决 Android N 上报错 android.os.FileUriExposedException: file:///storage/emulated/0/

解决android N文件访问crash android.os.FileUriExposedException file:///storage/emulated/0/xxx 原因: Android N对访问文件权限收回,按照Android N的要求,若要在应用间共享文件,您应发送一项 content://URI,并授予 URI 临时访问权限。 而进行此授权的最简单方式是使用 FileP...

小五博客园 2万+

FileProvider配置【FileUriExposedException报错处理】储存权限

文章内容来自于:Android 7.0 行为变更 通过FileProvider在应用间共享文件吧解决 Android N 7.0 上 报错:android.os.FileUriExposedException 在官方7.0的以上的系统中,尝试传递 file://URI可能会触发FileUriExposedException。 目录 第一步 声明FIleProvider 第二步 编写XM...

fengyeNom1的博客 2007
上一篇: Android开发:TabHost嵌套Activity,TabHost的子Activity中startActivityForResult调用其他Activit,onActivityResul方法不响应
下一篇: Android开发:通过Html改变一句话中某个字的颜色
android157
博客等级 码龄9年 193粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值