我的Android应用运行的设备上没有Playstore。计划是在运送设备时预安装软件。我现在正在寻找升级应用程序的策略。
我发现这个有用的链接可以从apk文件中安装Android应用程序:
Android: install .apk programmatically
我想我会用这个逻辑自动升级我的应用程序。我想知道它是否有可能。我认为升级将首先尝试卸载现有版本,但会因为可执行文件仍在运行而失败,文件可能会被锁定。有没有更好的办法?问候。
答案 0 :(得分:3)
用户已将软件预先安装在他们的设备上,我们会在公司服务器上托管更新APK。
然后,从应用程序中,他们可以检查我们有WCF服务的更新,该服务提取APK文件(基本上是.zip)并返回清单详细信息。从那里我们有APK的版本,可以将它与本地版本进行比较。
如果用户决定升级,他们可以下载APK,您可以自动启动它。此时将告知用户应用程序将被更新。没有文件锁等,应用程序将关闭并使用新版本重新启动。
注意:降级不是"自动"。用户必须先卸载该应用程序。但是,对于升级,这是一个简单的下载和启动APK版本的情况(如果没有检查,用户将被告知他们需要允许来自未知来源的安装。)
答案 1 :(得分:0)
您有几种选择,具体取决于您的目标系统。
使用您发布的链接。这将为用户提供传统的安装对话框,用户可以选择是否安装。你应该避免自动这样做,因为APK可能很大,如果他们不想要更新,你可能会激怒用户。
您可以神奇地安装更新,但是您需要固件签名密钥(或者可能是root用户,但我还没有对其进行测试)。这不会要求用户同意。您需要使用反射添加其他代码才能访问Android的安装方法。如果你这样做,你应该建立一个选择退出/进入机制。
答案 2 :(得分:0)
如果您的应用是开源的,F-Droid可以为您解决问题。
F-Droid是一个可安装的FOSS目录(免费和开源 软件)Android平台的应用程序。客户做到了 易于浏览,安装和跟踪设备上的更新。
主要是,它会在必要时更新您的应用。 (或者只是看一下它的source code,了解如何做到这一点。)
答案 3 :(得分:0)
是的,但据我所记得,只有您具有Root特权才能访问INSTALL_PACKAGES权限。