以编程方式安装android apk已禁用安装按钮

时间:2017-10-27 20:20:02

标签: android installer apk

在我的公司,我们有2个应用程序,都通过apks安装。第一个应用程序是"安装程序"并负责安装" app" APK。

我们使用这行代码来调用" app"要安装的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);

现在,这适用于我们使用的每台设备,除了带有android 7.1.1的三星SM-P355M(标签A)。

当我们在Samsung Tab A上执行上面的代码时,安装按钮被禁用。

Install button disabled

但是如果用户按下“最近的应用”按钮,然后返回到我们的"安装程序"应用程序,安装提示返回启用安装按钮!

Install button re-enabled

我不知道为什么会发生这种情况以及为什么它只发生在这个特定的设备上,而且很多用户在安装我们的应用时遇到了问题,因为他们不知道这种解决方法。

有趣的是,如果我通过三星文件管理器手动浏览并找到apk并点击安装,则按钮已启用!如果我尝试使用APK Installer PRO安装,也会发生同样的事情。 但是如果我尝试使用ES文件资源管理器,则会禁用安装按钮。

我在想我的代码可能会出错,但我不知道那是什么,因为有些应用程序可以安装我们的apk,但有些其他人无法使用手动解决方法。

我试图寻找任何已安装的应用程序,这些应用程序可能会吸引应用程序"许可,屏幕录像机,磁通或类似的东西,但没有找到任何可能导致这个问题。

如果有人知道为什么该按钮最初被禁用,但在进入最近的应用程序后重新启用,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

经过一周的尝试后我设法解决了这个问题,但忘记在这里发布了。

为了将来的参考和帮助那些可能像我一样处理这个错误的人,我会留下我在这里所做的事情。

我发现任何针对低于23的api级别的应用都会出现此问题。这是因为,我认为,在api 23之前,用户必须在安装过程中接受所有应用程序权限,并且在api 23之后,应用程序只有在需要时才会请求权限。 我检查了我们的应用程序,并确认他们的目标是一个非常古老的api级别,所以我所要做的就是至少针对api级别23并使用新的"请求应用程序权限"向用户请求许可。执行此操作后,安装按钮工作正常。

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