有没有办法在Android上自动更新应用程序?

有没有办法在Android上自动更新应用程序?,android,updates,Android,Updates,我正在开发一个应用程序,它很可能预先安装在设备上。它也将在谷歌Play上提供。有没有办法更新那些没有通过Google Play下载的实例,因为Google Play不会通知用户更新 我在考虑,作为,尝试定期联系我的网站,当更新可用时,下载它 有没有一种方法可以自动执行此更新,或者甚至以静默方式执行此更新,以便用户不必执行任何操作(例如手动运行包)。或者,当我的网站显示更新可用时,通过Google Play向用户提供更新,即使它不是通过Market安装的(编辑:此Google Play选项更可取,

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

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


有没有一种方法可以自动执行此更新,或者甚至以静默方式执行此更新,以便用户不必执行任何操作(例如手动运行包)。或者,当我的网站显示更新可用时,通过Google Play向用户提供更新,即使它不是通过Market安装的(编辑:此Google Play选项更可取,因为用户不必选中“允许安装非市场来源”。

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

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


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

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

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

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse(myapk_link));
startActivity(intent);    
下载后,用户必须手动运行包

如果您从Android market选择更新,请使用:

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://details?id=com.package.name"));
startActivity(intent);  
com.package.name
必须是应用程序的“包”

我正在开发一个应用程序 将很可能预先安装在 设备


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

只是找到了一个可行的方法。激发了一个搜索我的应用程序的市场意向

使用OpenIntent新闻阅读器进行测试,因为很容易找到旧版本的.apk。Market会找到一个应用程序,当用户单击install时,会将旧版本替换为市场上的版本。我认为对于用户来说,这比手动下载.apk并运行它要容易得多

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

如果在设备上捆绑应用程序的人正确地完成了该应用程序的工作,则该应用程序仍将具有市场链接(即使是作为系统应用程序),如果有新版本可用,市场将提示用户升级该应用程序。毕竟,手机上预装的GMail应用程序正是如此

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

老问题,新答案:

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

Google Play可以管理预加载应用程序的更新,前提是满足以下条件:

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

*从2015年4月13日起,有一项很好的服务可以帮助您的应用程序不断更新。看看

在这个产品中有一个忍者模式,允许执行更新而无需用户交互


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

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


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

谷歌在2018年安卓开发者峰会上宣布了面向开发者的安卓应用程序内更新api,这样你们就可以在这里阅读整个故事,并在这个问题上获得更新


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

尝试从应用程序更新此google库

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

我希望这将帮助为设备供应商或运营商工作或与之合作的任何人

预安装。是的,最有可能,但如果是在公司环境或类似环境中,一种选择是最初通过从市场下载进行安装,不必扮演你自己的更新程序。卖家可能会在他们的设备上预装,但他们可能不会通过市场安装,我想让用户无需太多麻烦就可以升级…“你甚至可能得不到投票权。”我不。。。这就是为什么我在寻找另一种方法。。
 dependencies {
implementation 'com.google.android.play:core:1.5.0'
...}