android - 从运行 Oreo 且没有 REQUEST_INSTALL_PACKAGES 的 android 应用程序安装 apk
问题描述
我正在开发一个具有自动更新功能的 Android 应用程序,我正在为其开发此应用程序的 android 设备没有 google play,所以我必须在有更新时在某处上传新版本的新 apk,并在每次应用程序时以编程方式检查是如果有新版本打开,如果有我下载它(apk)然后使用此代码安装
Uri apkUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", file);
Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
intent.setData(apkUri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent, 123);
由于运行该应用程序的设备运行的是android 7,它可以正常工作。最近,设备升级到Android 8,并且该功能停止工作,经过搜索了很多天,我发现我必须获得一个权限REQUEST_INSTALL_PACKAGE
才能安装新的包https://developer.android.com/reference/android/Manifest.permission.html#REQUEST_INSTALL_PACKAGES从 Android API 25 开始,正如文档在此链接中所说。我现在有两个问题;
第一:我没有在旧apk中包含这个权限,所以旧apk的所有用户都必须卸载旧apk并手动安装新apk(新的是有REQUEST_INSTALL_PACKAGE
perm的那个)
第二:即使他们这样做了,我在那里使用的代码也会将用户带到一个屏幕上,并显示一条可怕的消息,向他们描述“谁在安装新的 apk 并且他们应对该行为负责”。我附上了消息的屏幕截图,即使有我需要从谷歌购买的证书,我也需要删除此消息,我搜索了该消息但一无所获
任何解决方案,在此先感谢
解决方案
即使有我需要从谷歌购买的证书,我也需要删除此消息
抱歉,无法删除此消息。请注意,它只会出现一次;如果用户授予您的应用安装应用的能力,那么以后ACTION_INSTALL_PACKAGE
的请求不应显示该消息。
我没有在旧apk中包含这个权限,所以旧apk的所有用户都必须卸载旧apk并手动安装新apk
他们不需要卸载旧应用程序。他们确实必须手动安装更新,但无需删除旧更新。
推荐阅读
- python - 如何将随机函数与单词变量一起使用?
- r - 在 R 中读取“ATRX”文件
- html - 列表项未根据给定命令执行
- javascript - Mocha 的基本功能“describe/before/it”是如何实现的?
- vue.js - 仅当用户通过验证时才允许用户转到页面
- python - 没有名为“numpy”的模块,但要求已经满足:numpy
- purescript - 是否可以在 PureScript 中进行多态行(或记录)投影?
- bash - 使用 awk 脚本转换 csv 文件
- reactjs - 对heroku做出反应并得到以下错误
- javascript - 在 ejs 中设置选择选项值