首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android APK意图转到错误链接

Android APK意图转到错误链接
EN

Stack Overflow用户
提问于 2018-09-12 03:21:25
回答 2查看 89关注 0票数 2

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

代码语言:javascript
复制
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 Store中,我关闭了对非playstore应用程序的扫描。

知道我做错了什么吗?

APK #1APK1:我不会尝试在我的应用程序中实现代码来将下载到本地存储。我只是尝试启动一个指向APK的URL的浏览器窗口。我正在尝试与这里描述的方法类似的方法:

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

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

代码语言:javascript
复制
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的下载和安装。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-12 04:53:25

编辑:收集了所有信息,这样我们就可以有一个检查表

WRITE_EXTERNAL_STORAGE

  • Check REQUEST_INSTALL_PACKAGES

  • Check检查应用程序是否有权限将该应用程序作为权限
  • 检查设备在device
  • 中是否有足够的空间如果您的URL是http,浏览器是否支持http?
  • 要安装的APK必须与安装启动请求的实例的APK同名。
  • 任何可疑信息?

上一次:你有没有得到写外部的许可?

This与您的问题类似

票数 1
EN

Stack Overflow用户

发布于 2018-09-12 08:12:22

我想通了。要安装的APK必须与生成尝试下载的实例的APK同名。我试图在APK的名称中引入一个版本号,这就破坏了它。非常感谢大家的帮助!

编辑:查看@kelalaka的答案,它更完整。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52282862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档