36

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

我正在考虑,按照这里的建议,尝试定期联系我的网站,当更新可用时,下载它。

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

4

10 回答 10

43

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

我将实际版本与我的 configuration.xml 的标签“< app_version >1.1< /app_version >”进行比较,如果它较低,我使用自定义 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);  
于 2010-06-16T23:43:24.807 回答
8

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

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

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://search?q=" + APPLICATION_NAME));
startActivity(intent);  
于 2010-06-17T01:57:26.193 回答
7

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

老问题,新答案:

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

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

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

* 截至 2015 年 4 月 13 日

于 2013-01-22T15:34:47.297 回答
4

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

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

于 2010-06-17T00:06:59.467 回答
2

这是最新版本更新的选项

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

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

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

我希望这会帮助任何人

于 2019-10-03T05:20:56.553 回答
1

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

于 2012-02-10T01:07:03.247 回答
0

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

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

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

于 2010-06-16T23:38:59.570 回答
0

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

在这个产品中有一个忍者模式,允许在没有用户交互的情况下执行更新。

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

于 2015-06-01T12:03:04.097 回答
0

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

用例将是一个信息亭应用程序,在同一品牌和型号的平板电脑上,没有 Google Play。

于 2018-02-06T20:02:57.173 回答
-1

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

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

于 2018-11-26T06:01:17.957 回答