以编程方式安装安卓apk,但安装按钮被禁用。

4
在我们公司,我们有两个应用程序,都是通过apk安装的。第一个应用程序是一个“安装程序”,负责安装“应用程序”apk。
我们使用以下代码行来调用“应用程序”apk进行安装:
Uri apkUri = Uri.fromFile(toInstall);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
startActivityForResult(intent, RC_INSTALL);

现在,我们使用的每个设备都可以正常工作,但是三星SM-P355M(Tab A)上的安卓7.1.1除外。

当我们在三星Tab A上执行上述代码时,安装按钮被禁用。

安装按钮被禁用

但是,如果用户按最近使用的应用程序按钮,然后返回到我们的“安装程序”应用程序,安装提示框将重新出现,并启用安装按钮!

安装按钮重新启用

我不知道为什么会发生这种情况,而且为什么它只会发生在这个特定的设备上,很多用户因为不知道这个解决方法而无法安装我们的应用程序。

有趣的是,如果我手动浏览并找到APK文件,通过三星文件管理器进行安装,那么按钮将启用!如果我尝试使用APK Installer PRO进行安装,也会出现同样的情况。但是,如果我使用ES文件浏览器尝试安装,则安装按钮将被禁用。

我认为我的代码可能存在问题,但是我不知道具体在哪里出错了。因为有些应用可以安装我们的apk文件,但有些却需要手动解决才能安装成功。
我已经尝试查看任何已安装的应用程序是否拥有“覆盖应用程序”权限、屏幕录像机、flux或类似的应用,但未发现任何可能导致此问题的原因。
如果有人知道为什么该按钮一开始被禁用,但在进入最近使用的应用程序后重新启用,请告知,谢谢。

谢谢你提醒我,使用最近按钮帮助我启用了安装按钮。我有一堆应用程序需要这样安装。其中一些默认启用了安装按钮,而其他的则需要最小化并重新打开。顺便说一下,这是在运行7.0的Android Studio模拟器上发生的 :) - Ismail Iqbal
1个回答

2

经过一周的尝试,我终于成功解决了这个问题,但是忘记在这里发布了。

为了以后参考,并帮助任何可能像我一样不幸遇到此错误的人,我将在此留下我的做法。

我发现任何针对23以下api级别的应用程序都会出现这个问题。我认为这是因为在api 23之前,所有应用程序权限必须在安装过程中被用户接受,而在api 23之后,应用程序只能在需要时请求权限。 我检查了我们的应用程序并验证了它们针对非常旧的api级别,所以我所要做的就是至少针对api级别23并使用新的“请求应用程序权限”来向用户请求权限。做完这些之后,安装按钮就正常工作了。

我希望这可以帮助任何遇到这个奇怪问题的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接