我正在开发一种很可能预装在设备上的应用程序。它也可以在Google Play上播放。有没有办法更新那些未通过Google Play下载的实例,因为Google Play不会通知用户有关更新的信息。
我正在考虑,suggested here,尝试定期联系我的网站,当有更新时,请下载它。
有没有办法自动执行此更新,甚至是静默更新,以便用户无需执行任何操作(如手动运行包)。或者,当我的网站显示更新可用时,通过Google Play向用户提供更新,即使它未通过市场安装(编辑:此Google播放选项会更好,因为用户不必检查“允许安装非市场来源“。)
答案 0 :(得分:43)
我有同样的问题,现在我检查我的应用程序的开头是否在我的配置xml中有新版本。
我将实际版本与代码“< app_version> 1.1< / app_version>”进行比较我的configuration.xml 如果用户继续升级
,我会问自定义的AlertDialogIntent 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);
答案 1 :(得分:8)
找到了一种有效的方法。为搜索我的应用的市场触发意图。
使用OpenIntent Newsreader测试,因为很容易找到旧版本.apk。 Market找到一个应用程序,当用户点击安装时,将旧版本替换为Market中的版本。我认为对于用户来说,比手动下载.apk并运行它更容易。
Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://search?q=" + APPLICATION_NAME));
startActivity(intent);
答案 2 :(得分:7)
是否有办法更新未通过Google Play下载的实例,因为Google Play不会通知用户有关更新的信息。
老问题,新答案:
在深入研究完全相同的问题(在设备上预装应用程序,如何通过Google-Play提供更新)后,我在support.google.com上找到了此信息*:
如果符合以下条件,Google Play可以管理预装应用程序的更新:
- 预加载的应用需要位于系统分区
- 预加载的应用需要免费
- 预加载的应用需要使用与Google Play中发布的应用相同的签名进行签名
- 预装和更新的应用的包名称必须相同
- 更新后的应用的版本代码需要大于预装应用
的版本代码
*截至2015-04-13
答案 3 :(得分:4)
我正在开发一个应用程序 很可能会预先安装 设备
然后,您需要与设备制造商交谈并向他们询问您的问题。鉴于他们的设备和将分发它的运营商,没有其他人能够告诉你什么是不可能的。答案将在很大程度上取决于他们如何创建固件,您的应用程序是固件的一部分还是“安装”为普通应用程序,他们与运营商的安排是对于固件更新,您甚至可能无法对此事进行投票。
答案 4 :(得分:2)
这里是最新版本更新的选项
https://developer.android.com/guide/app-bundle/in-app-updates#update_readiness
尝试使用该google库从应用程序进行更新
// Obtain a reference to the nHrs0 member
val nHrs0Member = Program::class.members.find { it.name == "nHrs0" }
// Since it is a property (var), we can and must cast it to
// KMutableProperty to use it
val nHrs0Property = nHrs0Member as KMutableProperty
// Kotlin properties are not really JVM fields. They consists
// of a getter (for 'val' and 'var') and a setter (only for
// 'var'). So to set this property, we need to obtain a reference
// to the setter
val nHrs0Setter = nHrs0Property.setter
// Create an instance to perform our operations on
val p = Program()
// Use our setter to set the property "nHrs0" on
// instance 'p' to 5
nHrs0Setter.call(p, 5)
// Prove that the property was set
println("p.nHrs0=${p.nHrs0}") // Prints p.nHrs0=5
我希望这会帮助任何人
答案 5 :(得分:1)
如果在设备上捆绑应用程序的任何人都能正确处理它,那么应用程序仍然会有市场链接(即使是系统应用程序),如果有新版本,Market会提示用户升级它。毕竟,这正是预装在手机上的GMail这样的应用所发生的事情。
答案 6 :(得分:0)
您无法自动安装或升级软件包。只有Android Market能够做到这一点(即它默默地自我更新)。
您当然可以下载软件包并触发Intent
进行安装,但用户必须启用“允许非市场应用”选项,他们仍需手动批准安装/升级。
可能需要调查的地方是谷歌地图如何做到这一点。这通常是预先安装的,但我相信它总是在Android Market应用中显示为更新。 packages.xml
或清单中是否有特殊标志,我不知道。
答案 7 :(得分:0)
有一项很好的服务可以帮助您的应用自我更新。看看https://www.pushlink.com
在此产品中,有一种NINJA模式,允许在没有用户交互的情况下执行更新。
对于其他"模式",启用"安装非市场应用"仍然需要。如果未启用,安装过程将要求它并将用户重定向到应用程序设置,之后,用户可以安装该应用程序。
答案 8 :(得分:0)
如果您可以将应用程序签名为系统应用程序,则可以完全自动更新应用程序。我们为特定硬件编写了一个应用程序,我们创建了一个制造商为我们签名的更新应用程序。更新应用程序在设备启动时运行,检查应用程序的当前版本和新版本,并在必要时安装新版本。
该用例将是一个自助服务终端应用,在一个品牌和型号的平板电脑上,没有Google Play。
答案 9 :(得分:0)
Google在2018年Android开发者峰会上宣布了面向开发人员的android应用内更新api,因此您可以在此处阅读整个故事并就此问题进行更新。Android in-app update api details