原来适配的写法,和常见的博客适配:
if(Build.VERSION.SDK_INT>=24) {//判读版本是否在7.0以上
Uri apkUri = FileProvider.getUriForFile(SplashActivity.this, "com.dafangya.app.pro.fileprovider", file);
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件读的权限
install.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(install);
}else {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://"+filePath), "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
dialog_progress.dismiss();
}
现在的适配方法:
if(Build.VERSION.SDK_INT>=24) {//判读版本是否在7.0以上
Uri apkUri = FileProvider.getUriForFile(SplashActivity.this, "com.dafangya.app.pro.fileprovider", file);
Intent install = new Intent(Intent.ACTION_VIEW);
install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//添加这一句表示对目标应用临时授权该Uri所代表的文件读的权限
install.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);//多添加这一句表示对目标应用临时授权该Uri所代表的文件写的权限
install.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivity(install);
}else {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://"+filePath), "application/vnd.android.package-archive");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
dialog_progress.dismiss();
}
之前只要一个读取权限就可以了,最近发现突然用不行了,还需要加多一个写的权限
相关推荐
安卓7.0系统深度解锁:安全获取Root权限的实用指南
本文详细介绍了在安卓7.0系统上安全获取Root权限的实用指南,包括前置知识、工具准备、实战操作流程及Root后的安全维护。通过Magisk等现代工具,用户可以无损解锁系统权限,同时避免破坏系统完整性。文章还提供了常见问题排错和进阶优化建议,帮助用户安全高效地进行Root操作。
Android FileProvider的使用
FileProvider官方APIAndroid 7.0 ChangesAndroid 7.0 在应用间共享文件对于面向Android 7.0的应用,Android框架执行的StrictMode API政策禁止在您的应用外部公开file://URI。如果一项包含文件URI的intent离开您的应用,则应用出现故障,并出现FileUriExposedException异常。解决方案:要在应用间共享文件
android通知栏更新,下载完成自动安装并清除消息通知
通知栏内更新,下载完成自动安装并清除消息通知,已修改测试,可直接用于项目
Android的FileProvider使用解释
FileProvider是android support v4包提供的,是ContentProvider的子类,便于将自己app的数据提供给其他app访问。
【Unity Animation 2D】从零到一:骨骼绑定与IK动画实战指南
本文详细介绍了Unity中2D骨骼绑定与IK动画的实战流程,从角色素材准备、骨骼系统创建到权重绘制和IK设置,逐步指导开发者掌握2D动画制作技巧。通过反向动力学(IK)技术,实现更自然的角色动画效果,适用于游戏开发和动画制作。
Graylog日志系统实战:高效接收与解析交换机日志
本文提供Graylog日志系统的实战部署与配置指南,重点讲解如何高效接收与解析交换机日志。通过Docker快速部署,配置Syslog输入,并指导华为、华三等主流交换机将日志发送至Graylog。文章还介绍了使用提取器解析日志字段、创建数据流进行分类,以及设置报警规则,实现从被动排查到主动预警的运维转变,帮助网络工程师构建集中、智能的日志管理系统。
Android版本更新时安装不成功可能遇到的问题
Android版本更新时应用安装不成功有哪些原因大家好,在做版本更新时需要覆盖安装之前老版本,但有时候可能会出现覆盖安装不成功的情况,下面我们来分析导致安装不成功的原因。 一:包名不同导致新版本无法覆盖老版本 这种情况一般我们都会注意到,包名不相同是无法覆盖安装的。 在修改包名的时候要保持AndroidManifest文件下包名以及app的build文件下的applicationId相同。二:使用
claude使用教程
提供了三种模型:claude,codex, gemini,三种模型都共用同一个apikey, 有开发需求使用claude效果较好,知识问答等场景gemini效果会更好些,本文只提供了claude的安装方式,剩下两种按需按照以下参考链接安装下即可,安装有问题参考文档:https://www.aicodemirror.com/dashboard/official-installation/macos-linux (不需要挂梯子,自己手机号注册就好)
产品更新,覆盖安装失败,原因和解决办法.
原因: 1.清单文件中没有设置 版本号: android:versionCode="5" 解决办法:添加一个版本号,或者之前有版本号,把版本号改高点 2.清单文件中:sharedUserId 错误: android:sharedUserId="android.uid.system" 解决办法: 删除掉这句代码. 3.
基于Landsat-8数据的山西省吕梁市地表温度反演研究过程(大气校正法)
1.数据下载:本实验采用的数据是 ①从地理空间数据云下载的来自landsat8 卫星,云量<=1%,时间为2017年5月12日的山西省吕梁市影像数据。为全面覆盖吕梁市,选用了两片影像。 ②吕梁市边界矢量图 2.数据预处理 ...
深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论
大众点评网站采用前后端分离架构,通过Ajax接口动态加载数据。按F12打开开发者工具,切换到Network(网络)面板。实际环境中,我们需要使用Python重现这一加密逻辑。查看请求响应,寻找包含评论数据的JSON接口。参数是大众点评的反爬机制核心,需要特别处理。:尊重网站的robots.txt文件规定。:仅将数据用于合法合规的研究和分析目的。:不侵犯大众点评的商业秘密和知识产权。打开大众点评网站,进入任意商户页面。:对采集到的用户信息进行脱敏处理。:避免对目标网站造成过大负担。
BTTV安卓版版本更新机制:自动更新与手动升级对比
BTTV(BetterTTV)安卓版是一款为Twitch移动应用提供增强功能的开源模组,支持BetterTTV、FrankerFaceZ和7TV表情等扩展功能。为确保用户始终能体验到最新功能与安全修复,BTTV安卓版设计了完善的版本更新机制,主要分为自动更新与手动升级两种方式。本文将详细对比这两种更新方式的工作原理、操作流程及适用场景,帮助用户选择最适合自己的更新策略。 [![BTTV安卓版应用
使用 MATLAB/Simulink 对一个开关磁阻电机进行建模
*开关磁阻电机(Switched Reluctance Motor, SRM)**是一种新型的无刷电机,以其简单的机械结构、宽广的调速范围和较高的效率在工业应用中得到了广泛关注。SRM的独特之处在于其定子和转子均为凸极结构,并且通过改变绕组电流的方向来实现转矩的产生和控制。本教程将详细介绍如何使用对一个开关磁阻电机进行建模,并探讨其基本控制策略,特别是针对双凸极结构的SRM。本文介绍了如何使用构建一个开关磁阻电机的双凸极结构模型,并探讨了其基本控制策略。
Android7.0 安装apk更新包的适配
项目中发现在自动更新功能的时候,下载好了apk的文件后在android7.0系统中不能自动跳到安装界面,后来百度了一番解决了问题。原因:我们先来看看产生的原因:当我们在7.0上使用系统服务去下载apk并且试图安装时,有可能由于权限问题导致安装失败。 每个Android版本的发布,对于安全性问题的要求越来越高,也为Android程序员增加了额外的工作量。Android6.0引入动态权限控制(Run
第4篇:使用 NModbus 库快速搭建 Modbus TCP 通信(从零开始用 C# 开发 Modbus 上位机)
本文介绍了如何使用 NModbus 库快速搭建 Modbus TCP 上位机通信程序。通过安装 NModbus4 NuGet 包,开发者可以轻松实现 Modbus TCP 连接,无需手动处理底层协议细节。文章详细演示了核心功能实现: 创建 TCP 客户端连接设备 读取保持寄存器(功能码0x03) 写入单个寄存器(功能码0x06) 关闭连接释放资源 提供完整C#示例代码,包含初始化连接、数据读写等关键操作,帮助开发者快速构建Modbus TCP通信应用。相比手动实现,NModbus库大幅简化了开发流程,特别适
HFSS 3D Layout仿真PCB操作说明
本文介绍一种特别适合PCB这种叠层结构的仿真软件,HFSS 3D Layout既有操作的简便性,又有同3D软件仿真所有的精确性,仿真速度上又比3D软件快很多。
Android7.0 自动更新适配,包解析异常
问题:在Android7.0的手机上,自动更新的时候出现包解析异常,在其他的手机上没有这个问题。 原因: Android7.0引入私有目录被限制访问和StrictMode API 。私有目录被限制访问是指在Android7.0中为了提高应用的安全性,在7.0上应用私有目录将被限制访问。StrictMode API是指禁止向你的应用外公开 file:// URI。 如果一项包含文件 fi
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
解决:安卓7.0以上自动更新无法安装问题
我是做unity开发的,当需要调用安卓原生的功能的时候往往会遇到很多权限的问题,没有系统的去学过安卓,遇到这样的问题只能去百度、google,但是解决这样问题的博客太多了,好多说的也都不对,要么有的只解决了7.0的,现在我给大家介绍一下我这边怎么解决的,包括安卓8.0。 我主要针对unity开发人员说一下,其它的应该都差不多,只是调用方式有区别。 对于unity开发人员,怎么调用安卓,我在这里...
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
android9.0系统适配遇到的问题
一、apk在9.0以下的系统上安装运行,没有问题。但是在9.0系统上运行会弹出一个框 解决办法: private void closeAndroidPDialog() { try { Class aClass = Class.forName("android.content.pm.PackageParser$Package"); ...
IMSL CNL 7.0.0 (x86-64)Crack
IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件
[转]Android 应用自动更新及6.0,7.0,8.0适配安装
原贴:https://www.jianshu.com/p/ea42040c7ace 原贴:https://www.jianshu.com/p/ea42040c7ace 原贴:https://www.jianshu.com/p/ea42040c7ace 在线更新分为以下几个步骤: 1, 通过接口获取线上版本号,versionCode 2, 比较线上的versionC...
Android 7.0 FileProvider的使用
如果你将path设为path="pictures",那么它代表着根目录下的pictures目录(eg:/storage/emulated/0/pictures),如果你向其它应用分享pictures目录范围之外的文件是不行的。一般写法都差不多,比如在启动app的时候,通过api接口获得服务器最新的版本号,然后和本地的版本号比较,来判断是否需要弹出提示框下载,当然也可以通过推送的自定义消息来实现。这些更改在为用户带来更加安全的操作系统的同时也为开发者带来了一些新的任务。当下载的时候,会有通知栏进度条提示。
Android8.0以上APP版本升级失败
从Android8.0以上开始,软件的升级又多了一个坑,权限管理更加严格了,一个不小心就升级失败。具体的解决方案如下: /** * 打开安装包 * * @param fileUri */ public void openAPKFile(String fileUri) { // 核心是下面几句代码 if (null...
【需求解决系列之四】Android App在线自动更新Library(V2.0)
前言 其实每个Android App都应该有一个App在线更新的功能,这样才能及时的通知用户去更新最新版本的App。这个功能其实说起来比较简单,因为流程大家都懂!但是要真正的实现,还是要考虑很多东西的!因为项目的需要,对之前已经开源的库做了下升级重构,下面就这个做个简单的介绍。 正文 特点概述 最大亮点,提供12种更新的样式,总有一个是你喜欢的类型! 支持三种设置更新信息的方式,您可以直接传mo...
SMAPI安卓安装器:为星露谷物语打造完美的模组体验
你是否曾经梦想着在安卓设备上也能畅玩带有丰富模组的星露谷物语?现在,这个梦想已经变成了现实!**SMAPI安卓安装器**正是你需要的解决方案,它让在Android设备上安装和管理星露谷物语模组变得前所未有的简单。 ## 为什么你需要SMAPI安卓安装器? 想象一下,你在手机上玩星露谷物语,却发现无法像PC玩家那样享受成千上万的模组带来的乐趣。传统的模组安装过程复杂,需要手动修改游戏文件,对于大
从卡顿到丝滑:MyTV-Android应用自动更新功能的深度优化实践
你是否曾遇到过电视应用更新时进度卡在99%的绝望?是否因后台下载占用带宽导致直播卡顿?本文将带你深入MyTV-Android应用自动更新系统的重构全过程,通过7大技术优化点,将更新失败率从23%降至0.5%,下载速度提升3倍,打造无缝的用户体验。读完本文你将掌握: - 跨平台版本检测的优雅实现方案 - 断点续传与下载进度实时反馈机制 - Android 10+安装权限适配的最佳实践 - 基于状态...
Qiankun微前端落地实践:主应用与子应用的最小配置和三个核心机制
qiankun 解决的是一个很具体的问题:把多个技术栈互不认识的子应用(React、Vue、Angular 甚至纯 HTML)挂到同一个页面上,让子应用保持"像独立 SPA 一样开发和部署"。它给谁用?给那些一个系统养了多个团队、想渐进式拆分前端的团队。动手前,建议先问自己三个问题:子应用是否要独立部署?是否跨团队各自发版?路由是否需要能直接输入 URL 直达?三个全是"是",qiankun 才真
455



被折叠的 条评论
为什么被折叠?



