首页 > 解决方案 > 从运行 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_PACKAGEperm的那个)

第二:即使他们这样做了,我在那里使用的代码也会将用户带到一个屏幕上,并显示一条可怕的消息,向他们描述“谁在安装新的 apk 并且他们应对该行为负责”。我附上了消息的屏幕截图,即使有我需要从谷歌购买的证书,我也需要删除此消息,我搜索了该消息但一无所获

在此处输入图像描述

任何解决方案,在此先感谢

标签: androidandroid-permissions

解决方案


即使有我需要从谷歌购买的证书,我也需要删除此消息

抱歉,无法删除此消息。请注意,它只会出现一次;如果用户授予您的应用安装应用的能力,那么以后ACTION_INSTALL_PACKAGE的请求不应显示该消息。

我没有在旧apk中包含这个权限,所以旧apk的所有用户都必须卸载旧apk并手动安装新apk

他们不需要卸载旧应用程序。他们确实必须手动安装更新,但无需删除旧更新。


推荐阅读