【问题标题】:Is there a way to automatically update application on Android?有没有办法在 Android 上自动更新应用程序?
【发布时间】:2010-06-16 22:57:39
【问题描述】:

我正在开发一个很可能会预装在设备上的应用程序。它也将在 Google Play 上提供。有没有办法更新那些没有通过 Google Play 下载的实例,因为 Google Play 不会通知用户更新。

我正在考虑,作为suggested here,尝试定期联系我的网站,当更新可用时,下载它。

有没有办法自动更新,甚至是静默更新,这样用户就不必做任何事情(比如手动运行包)。或者,当我的网站显示更新可用时,通过 Google Play 为用户提供更新,即使它没有通过 Market 安装(编辑:这个 Google Play 选项会更好,因为用户不必检查“允许安装非市场来源”。)

【问题讨论】:

  • 可能是通过为设备供应商或运营商工作或与设备供应商或运营商合作预安装的。
  • 是的,很可能,但如果是在公司环境或类似环境中,一种选择是通过从市场下载最初安装,而不必使用自己的更新程序。
  • 卖家有可能会在他们的设备上预安装它,但他们可能不会通过 Market 安装它,我想让用户能够轻松升级...

标签: android updates


【解决方案1】:

我遇到了同样的问题,现在我在我的应用程序开始时检查我的配置 xml 中是否有新版本。

我将实际版本与我的 configuration.xml 的标签“1.1”进行比较 如果它较低,我会使用自定义 AlertDialog 询问用户是否继续升级

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse(myapk_link));
startActivity(intent);    

下载后用户必须手动运行包。

如果您选择从 Android 市场使用的更新:

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://details?id=com.package.name"));
startActivity(intent);  

com.package.name 必须是您应用的“包”

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://search?q=" + APP_NAME));
startActivity(intent);  

【讨论】:

  • 这就是我的想法。对于用户来说还是有点太复杂了......谢谢
  • 您与 GooglePlay 版本相比如何。男人会很感激的
  • 我所做的是在 Internet 上获取最新版本,例如 yourdomain.com/lastversion.txt。当应用程序启动时,它会对记录最新版本的 url 执行 http 获取,并与应用程序版本进行比较,如果远程版本更高,则我启动意图。因此,在您的版本从 Google Play 获得批准后,我会使用新发布的版本更新 yourdomain.com/lastversion.txt 内容。
【解决方案2】:

刚刚找到了一种可行的方法。为搜索我的应用程序的市场触发 Intent。

使用 OpenIntent Newsreader 进行测试,因为很容易找到旧版本的 .apk。 Market 找到一个应用程序,当用户单击安装时,将旧版本替换为 Market 中的应用程序。我认为对于用户而言,这比手动下载 .apk 并运行它要容易得多。

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://search?q=" + APPLICATION_NAME));
startActivity(intent);  

【讨论】:

  • 如果设备上没有 Market(即 Google Apps)怎么办?
  • 我的所有用户都应该安装了 Market。我想,如果不是这样,Jorgesys 的答案是唯一的选择。
【解决方案3】:

有没有办法更新那些没有通过 Google Play 下载的实例,因为 Google Play 不会通知用户更新。

老问题,新答案:

在研究了完全相同的问题(设备上预装的应用程序,我如何通过 Google-Play 提供更新)后,我在 support.google.com* 上找到了这些信息:

如果满足以下条件,Google Play 可以管理对预加载应用程序的更新:

  • 预加载的应用需要在系统分区中
  • 预加载的应用需要免费
  • 预加载的应用需要使用与 Google Play 中发布的应用相同的签名
  • 预加载和更新应用的包名需要相同
  • 更新应用的版本代码需要大于预加载应用的版本代码

* 截至 2015 年 4 月 13 日

【讨论】:

  • 截至 2013 年 10 月 10 日,其中一项要求是“预加载的应用程序必须是免费的”。
【解决方案4】:

我正在开发一个应用程序 很可能会预装在 设备。

然后,您需要与设备制造商交谈并向他们提出您的问题。鉴于他们的设备和将分发它的运营商,没有其他人能够告诉您什么是可能的,什么是不可能的。答案将在很大程度上取决于他们如何创建固件,您的应用程序是固件的一部分还是作为普通应用程序“安装”,他们与运营商的安排是相对固件更新,等等。你甚至可能在这件事上没有投票权。

【讨论】:

  • “你甚至可能在这件事上没有投票权。”我不...这就是为什么我正在寻找另一种方式...:P
  • 也许你可以更新你的答案并指向你的 cwac-updater
  • @CommonsWar 我们可以从 google play 自动更新 lanucher 应用吗?我面临问题stackoverflow.com/questions/39504146/…
【解决方案5】:

这里是最新版本更新的选项

https://developer.android.com/guide/app-bundle/in-app-updates#update_readiness

试试这个谷歌图书馆从应用程序更新

 dependencies {
implementation 'com.google.android.play:core:1.5.0'
...}

希望对大家有帮助

【讨论】:

【解决方案6】:

如果将应用程序捆绑到设备上的人做得很好,那么该应用程序仍然会有一个市场链接(即使作为系统应用程序),如果有新版本可用,市场会提示用户升级它。毕竟,这正是手机上预装的 GMail 等应用所发生的情况。

【讨论】:

    【解决方案7】:

    您无法自动安装或升级软件包。只有 Android Market 能够做到这一点(即,它会自动更新)。

    您当然可以下载一个包并触发Intent 来安装它,但用户必须启用“允许非市场应用程序”选项,并且他们仍然必须手动批准安装/升级.

    一个可能需要调查的地方是 Google 地图是如何做到的。这通常是预装的,但我相信它总是在 Android Market 应用程序中显示为更新。 packages.xml 或清单中是否有特殊标志,我不知道。

    【讨论】:

      【解决方案8】:

      有一项很好的服务可以帮助您的应用保持更新。看看https://www.pushlink.com

      在本产品中有一个忍者模式,无需用户交互即可执行更新。

      对于其他“模式”,仍然需要启用“安装非市场应用”。如果未启用,安装过程将要求它并将用户重定向到应用程序设置,然后用户可以安装应用程序。

      【讨论】:

      • 你能带我到一些文档或博客或关于这个忍者模式的东西,所以我可以再挖掘一下吗?谢谢。
      • 还有一个很贵的! 5000 次安装是每月 1250 次,而且会上升。有点离谱,但如果你是一个愚蠢的公司,那就好了。 Target 可能是一个小型的私有应用安装基础。
      【解决方案9】:

      如果您可以将应用程序签名为系统应用程序,则可以完全自动更新应用程序。我们为特定硬件编写了一个应用程序,我们创建了一个制造商为我们签名的更新应用程序。更新应用程序在设备启动时运行,检查应用程序的当前版本和新版本,并在必要时安装新版本。

      用例是一个自助服务终端应用,在同一品牌和型号的平板电脑上,没有 Google Play。

      【讨论】:

        【解决方案10】:

        Google 在 2018 年 Android 开发者峰会上宣布了面向开发人员的 android 应用内更新 api,因此您可以在此处阅读整个故事并获取有关此问题的最新信息。Android in-app update api details

        https://developer.android.com/guide/app-bundle/in-app-updates

        【讨论】:

        • 那篇文章没有官方文档的链接,这个答案也没有。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 2019-02-09
        • 2019-08-14
        • 1970-01-01
        • 1970-01-01
        • 2013-04-02
        • 1970-01-01
        相关资源
        最近更新 更多