如何通过编程在不使用Android市场的情况下更新Android应用程序

3

我需要帮助,

1)我正在开发一款应用程序,想要显示包括视频在内的离线网站,因此我将视频添加到原始文件夹以供应用使用,但我想在某些天之后更改这些视频(也许从应用中添加或删除一些视频)。 那么不使用Android市场如何更新我的应用程序?

我的想法是当我启动应用程序时,它会解析JSON并检查我的网站上是否有新版本的应用程序。如果有,则会开始下载它(我不想打开浏览器进行下载,更新应在我的应用程序内部或后台完成),然后重新安装它。如何通过编程实现这一点?

另外,我该如何在Web视图中缓存整个网站?目前我正在使用以下代码,但它只缓存已访问的页面(在应用程序中打开的页面)

webView.getSettings().setLoadsImagesAutomatically(true);
 webView.getSettings().setDomStorageEnabled(true);
 webView.getSettings().setAppCacheMaxSize(1024*1024*24);
 String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
 webView.getSettings().setAppCachePath(appCachePath);
 webView.getSettings().setAllowFileAccess(true);
 webView.getSettings().setAppCacheEnabled(true);
 webView.setWebChromeClient(new WebChromeClient());
 webView.setWebViewClient(new WebViewClient());   
 if (savedInstanceState == null) {
 if(isNetworkAvailable() == true){
 webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
 webView.loadUrl("http://www.xyz.com");
  } else {
 webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
 webView.loadUrl("http://www.xyz.com");
  }   } }

2) 如何在不点击eclipse“运行”按钮的情况下,通过usb从mac安装apk到平板电脑。 我想要在200个平板电脑上安装此apk,因此我正在寻找一些批处理程序或一些脚本,可以作为app的一键安装脚本。 我在谷歌上搜索发现了一个多应用程序一键安装,但我不知道它是否适用于未root的平板电脑。

等待回复。 谢谢。


1
我有一个开源项目,可以让你在应用程序内检查、下载和安装更新这里 - Raghav Sood
@RaghavSood 非常感谢你啊..你有一些实现示例吗?下载apk后会要求用户安装吗?如果同一个应该程序正在运行,那么在您完成下载之后会发生什么?它会退出应用并安装更新,还是等待退出之后再安装? - Swap-IOS-Android
这里有一个集成指南链接。除此之外,您可以选择立即下载和安装,或者分别下载和安装。如果您的应用程序在前台运行,则它将通过退出您的应用程序来下载和安装。 - Raghav Sood
2个回答

2
有两种方法可以实现这一点,第一种是使用推送通知,告诉用户有新版本可用,当他们点击通知时从您的网络服务器下载apk并让他们安装(我曾经使用过这个方法)。
另一个选择是在一定时间后轮询您的Web服务器,比如每天一次,并检查新版本是否可用。一旦可用,将其推送到通知区域,告知用户有新版本可用。当用户点击时,它将再次重复上述过程。为此,您只需要一个Web服务器,您将请求发送并从中下载应用程序即可。

听起来很酷,但是当我点击通知以下载更新时,它不会打开网页浏览器下载,而应该在我的应用程序中(或后台)下载。如果您不介意,能否与我分享您的示例实现代码? - Swap-IOS-Android

1

我认为将商店视频等作为资源存储是一种不好的方式。

您可以通过定时器与您的网站同步数据,并将所有数据存储在数据库或SD卡中 - 这样您就不需要重新安装应用程序,而只需有时下载一些数据,所有数据都将在您的设备上并且离线可用。

至于脚本 - 您可以编写自己的脚本,仅运行abd install app - 这样您只需要启动adb而无需打开IDE。

顺便说一句,在非root设备上,您可以“重新安装”您的应用程序而无需用户操作 - 因此,用户多次重新安装您的应用程序非常不方便。

更新

要通过USB安装应用程序 - 此人必须拥有adb。

他们不想等待下载完成

但在这种情况下,他们必须等待应用程序下载完成=)。 即使此内容在资源中或在线可用,他们也必须下载内容。

如果您想创建具有内置内容的应用程序,则可能会遇到一些问题:

  • 一些设备无法接受非常大的APK文件(例如对于htc desire而言,>20 mb是个坏主意=)
  • 每次您想要更新应用程序时,人们必须重新下载大量信息,如果内置在线缓存,他们可以花费更少的时间来下载差异。即使人们通过USB安装您的应用程序-您也可以将所有数据放在SD卡上。
  • 您无法以这种方式升级非rooted设备上的应用程序,以使人们不会生气-他们每次都必须重新安装您的应用程序。但是使用我的方法,他们可以睡觉,内容可以下载。

因此,我无法想象任何情况下您的方法比通常的“在线”方法更好。


我想要类似于批处理文件(如Windows)的东西,可以在一个点击中完成所有工作并安装(供非技术人员在平板电脑上安装应用程序),或者像make文件一样...但我不知道如何创建它。你能帮我吗? - Swap-IOS-Android
我正在开发一款更注重离线而非在线的应用程序。例如,当我在平板电脑上安装应用程序时,用户可以离线获取所有信息。他们不想等待下载完成。你的想法很好,但我的情况有所不同。因此,当新视频添加时,我会将其添加到项目文件夹中,并为我的应用程序进行版本更新,它将自动下载和更新。你有其他建议吗? - Swap-IOS-Android

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接