APP 应用内更新,下载安装包之后调起安装界面无反应/安装界面闪退返回到了 APP 页面
此项目是基于 mPaaS 框架,更新 APP 的功能
最近测试提的一个缺陷,线上的 APP 更新时,点击更新下载完安装包后点击安装无法调起 APP 安装。
出现问题的版本: android 10
- 代码排查
(PS:因为测试说是在 android 10 才会出现的问题,所以从一开始就朝着 android 10 适配的方向去排查问题)
- 1 “私有目录” 的适配(安卓 10 上对于目录权限的改动大家可以自行百度)
查看安装包下载的目录,发现下载好的新的安装包是存储在报名目录下的 download 文件夹中,所以排除了访问外部目录导致这个因素。
- 2 安卓10 对于后台启动 Activity 做了限制
安装操作是用户点击 “安装更新” 按钮才调起安装界面的,因而这个因素也可以排除
(【黑人问号.gif】,那不对呀!安卓 10 上的改动与更新安装包有关的也就这两个点了,感觉方向有点跑偏了......)
- 没有其他思路了,抱着死马当活马医的心态我插上了数据线打算调试一下。(手上的测试机:华为 Mate 20 Pro/ Android 10.0)
无论怎么点击立即安装,APP 都没有作出任何反应,日志上也看不到明显的报错(然后我忍痛将自己的手机【Redmi K20 Pro / Android 9.0】 升级到了安卓 10 )
好消息是,用 Redmi 手机调试的时候可以看到点击 “立即更新” 会跳转到系统安装页面又很快闪退回来 APP。日志中可以看到明显的报错信息是缺少了 REQUEST_INSTALL_PACKAGES 这个权限,加上这个权限后在 Mate 20 Pro 和 Redmi K20 就可以正常调起安装页面了。
出了新包,通知测试进行复测后,测试传来捷报,华为 Mate 30 Pro 依旧无法调起安装页面(我也是很无奈,Mate 20 可以,Mate 30 不行,安卓机型的适配一直都是个大坑,总是会有一些莫名其妙的问题),没办法,只能接着排查问题。
顺着安卓 10 私有目录的思路(我想 APP 无法调起安装页面的原因会不会是因为访问不到下载好的安装包)浏览了不少的博客文章,发现一个跟 “私有目录” 相关的一个东西,就是 FileProvider。FileProvider 是安卓 7.0 引入的一个机制,用来对 file://uri 的使用进行规范(关于 FileProvider 的使用有兴趣的自行百度)。
在使用 FileProvider 的时候,我们会再 AndroidManifest.xml 文件中配置 provider
<providerandroid:name="android.support.v4.content.FileProvider"android:authorities="${applicationId}.provider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" /></provider>
其中 file_paths 的内容如下所示(代码中配置的目录则会决定外部 APP 所能够访问的你的 APP 的路径,下面的是我修改过的,考虑到如果是因为安装程序无权限访问 APP 安装包所在的目录,所以就把原来配置的 <external-files-path> 路径修改成了安装包所在的目录):
<!--
<root-path/> 代表设备的根目录new File("/");
<files-path/> 代表context.getFilesDir()
<cache-path/> 代表context.getCacheDir()
<external-path/> 代表Environment.getExternalStorageDirectory()
<external-files-path>代表context.getExternalFilesDirs()
<external-cache-path>代表getExternalCacheDirs()
--><paths><files-path path="." name="sdcard"/><external-files-pathname="download"path="com..android.upgrade/downloads" /><external-pathname="download_sdcard"path="files/com.android.upgrade/downloads" /></paths>
开心的是这个猜想是正确的,修改完之后 Mate 30 Pro 也正常进行安装了
不过还是没搞懂为什么没修改之前其他手机是可以的,如果又大佬碰巧看到我的疑问,希望解答一下。
APP 应用内更新,下载安装包之后调起安装界面无反应/安装界面闪退返回到了 APP 页面相关推荐
- 加快Linux上yum下载安装包的速度(以CentOS 7,安装gcc为例)
今天在学习Linux的过程中,学到了关于包的安装问题:rpm包管理和yum在线管理两种方式:这里因为我在实验yum安装gcc出现了网速超级慢的问题,于是搜索解决方案,重新配置repo得以解决,记录整个 ...
- android_ android apk analyzer(libchecker apk分析器):分析Android手机上已安装的app(库/基础组件分析/开发技术)/从酷安市场下载安装包
android apk analyzer(libchecker apk分析器):分析Android手机上已安装的app(库/基础组件分析/开发技术-) download app(apk) Releas ...
- 小米妙享更新的安装包下载到了电脑的哪里
本教程前提是针对已经会pojie安装限制的家人们 首先检查更新,下载安装包 为了不让非mi电脑用妙享中心小米真是煞费苦心 直接把路径分离出来了,这谁一眼能看到啊!!!??? 反手Everything一 ...
- linuxoracle静默安装应答文件修改_Windows7重要更新补丁安装包 2020.01.17
2020年1月14日微软官方宣布正式停止支持Windows 7(以下简称Win7),除付费政企用户外,不再提供安全补丁或者更新服务.那么以后win7的更新要怎么办?难道只能"裸奔" ...
- 知云文献翻译打不开_最新版知云文献翻译 | 内附软件安装包
点击上方蓝字了解更多精彩 免责声明 所有资源全部为免费分享,大部分资源来源于网络,所有资源仅供学习和交流使用,严禁商用,如有侵权,请联系我们删除,谢谢合作. 知云文献翻译 知云文献翻译是一款十分专业且 ...
- 微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包实现方式及源码
需求:微信跳转手机默认浏览器打开指定HTML链接 微信点击链接直接下载安装包 原因:在微信内不允许直接下载apk 这里有一个解决方案,直接上关键代码 <!doctype html> < ...
- golang 通过go get | go mod download下载安装包
golang 通过go get | go mod download下载安装包 安装完golang后,输入go env可以看到 GOPATH="/home/zhongzhanhui/go&qu ...
- r语言从网页下载东西内容 r安装特定版本的r包 r从网页下载 安装包
加载 library(RCurl) getBinaryURL(url, -, .opts = list(), curl = getCurlHandle(), .buf = binaryBuffer(. ...
- go语言 第三方包安装方法_Adobe AE 2020 软件下载安装包教程(附下载方法)
Adobe After EffectsCC 2020绿化版 AE CC2020电脑版下载.Adobe After Effects 2020(AE 2020)是一款由Adobe公司开发的电影视觉效果和动 ...
最新文章
- Real World Haskell 第七章 I/O
- neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead
- Spring为什么建议构造器注入?
- Shiro权限控制笔记要点
- bapi sap 创建物料_SAP使用BAPI创建物料主数据的最小输入-阿里云开发者社区
- VTK:图表之ColorEdges
- Mybatis源码阅读(四):核心接口4.2——Executor(下)
- 计算机基础知识复习资料,计算机基础知识复习资料
- 工作不能混日子,给自己留言
- php 中文字符串截取函数--比较好的
- Linux使用evhttp实现一个简单的HttpServer
- JavaScript基础学习(一)—JavaScript简介
- 苹果三星手机被诉辐射超标;淘集集启动破产清算;Drupal 8.8.0 发布 | 极客头条...
- 初识EMCASCRIPT 模块化
- Node.js 8有哪些重要功能和修复? 1
- 安居客头部导航栏的编写
- PHP超级外链工具源码/无后台一键批量外链源码
- windows/linux远程开关机原理及实现
- ubuntu系统学习(1) 测网速命令/实时显示网速speedometer
- 一周疫情对行业影响观察 | 中国资产或成避险资产;亚太旅游零售业呼吁政府财政支持...
热门文章
- 第七课 极限学习机( Extreme Learning Machine, ELM)
- 高品质的蓝牙耳机有哪些?四款高品质蓝牙耳机推荐
- android相册加密如何实现,vivo手机如何给相册加密?vivo手机相册加密教程
- c语言中的countif函数,COUNTIF函数高能应用
- 同一个SqlHelper链接不同的数据库
- Linux——进程间通信(共享内存shm)笔记
- ffmpeg‘不是内部或外部命令,也不是可运行的程序 或批处理文件。
- Android 快速开发系列 打造万能的ListView GridView 适配器
- Linux core dump文件设置以及查看
- ATMS启动Activity流程 - 安卓R