【问题标题】:Android APK Intent goes to wrong linkAndroid APK Intent 链接错误
【发布时间】:2019-02-16 08:50:04
【问题描述】:

我想实现一个点击事件,提示用户下载 APK 以将我的应用更新到最新版本:

public void f(View view) {
    Uri uri = Uri.parse("https://www.example.com/app-release.apk");
    startActivity(new Intent(Intent.ACTION_VIEW, uri));
}

我构建了应用程序并将其部署到我的手机上。我启动应用程序并单击按钮。浏览器打开。在地址栏中,我非常简要地看到了 APK 的 URL。然后这个 URL 消失,浏览器转到我在测试前最近访问的任何页面。 APK 未下载。

我已确保要安装的 APK 的版本号超过我测试按钮点击的应用的版本号。 APK 的 URL 是有效的,如果我在浏览器中明确访问该 URL,APK 就会安装。我在清单中启用了 android.permission.INTERNET。在手机上我允许安装来自未知来源的应用程序,在 Play 商店中我关闭了对非 Playstore 应用程序的扫描。

知道我做错了什么吗?

编辑#1:我不想在我的应用中实现代码以将 APK 下载到本地存储。我只是想启动一个指向 APK 的 URL 的浏览器窗口。我正在尝试类似于此处描述的方法:

https://juristr.com/blog/2011/02/coding-update-functionality-for-your/

在该解决方案中,提示下载 APK 的代码是:

Intent updateIntent = new Intent(Intent.ACTION_VIEW,
       Uri.parse("http://some-public-url/deploy/MyApplication.apk"));
startActivity(updateIntent);

这就是我想做的。但它不会开始下载。 URL 在地址栏中短暂闪烁,但随后浏览器会返回到之前所在的任何页面。

编辑#2:如果我使用调试器和虚拟设备启动它,代码的行为与我预期的一样。如果我将 APK 安装到我的物理设备上,然后单击那里的按钮,它就会出现如上所述的故障。物理设备和虚拟设备都是 Nexus 5。

我创建了两个版本的 APK,一个“版本 1”和一个“版本 2”。从版本 1 中,我想触发版本 2 的下载和安装。

【问题讨论】:

  • 如果你想直接下载东西,你应该看看 Android 的下载管理器 API。这很简单,而且会更可靠。

标签: android


【解决方案1】:

编辑: 收集所有信息,以便我们可以有一个检查清单

  • 检查应用程序是否具有 WRITE_EXTERNAL_STORAGE 权限
  • 将该应用程序检查为权限 REQUEST_INSTALL_PACKAGES
  • 检查设备中是否有足够的空间
  • 如果你的网址是http,浏览器是否支持http?
  • 您要安装的 APK 必须与安装启动请求的实例的 APK 同名。
  • Lo​​gcat 上有任何可疑信息吗?

上一个: 您是否获得了 Write External 的许可?

This和你的问题类似

【讨论】:

  • 感谢您回复我。在我看来,WriteExternal 不太可能是相关的,它与将文件下载到本地存储有关,我只是试图启动一个指向 APK 的 URL 的浏览器窗口。您链接的那个页面提到了 REQUEST_INSTALL_PACKAGES 权限,我尝试添加该权限,但没有帮助。
  • 第三部分安装是否在手机设置中开启?
  • 在手机上我允许安装来自未知来源的应用程序,在 Play 商店中我关闭了对非 Play 商店应用程序的扫描。
  • 设备上有足够的空间吗?
  • 太棒了。非常感谢您的编辑。我接受了你的回答。我可以建议您编辑“您要安装的 APK 必须与 APK 同名...”并附加:“...安装了启动请求的实例。”
【解决方案2】:

我想通了。您要安装的 APK 必须与生成尝试下载的实例的 APK 同名。我试图在 APK 的名称中引入版本号,这就是破坏它的原因。非常感谢您提供的所有帮助!

编辑:请参阅@kelalaka 的答案,它更完整。

【讨论】:

    猜你喜欢
    • 2019-03-12
    • 2018-06-10
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 2021-09-18
    • 2014-03-21
    • 2015-12-23
    相关资源
    最近更新 更多