2010-04-06 116 views
4

我正在开发一个应用程序,该应用程序可以从网站(市场也可以)获得。我目前遇到的问题是如何处理应用程序的更新。我知道如何检查当前版本的版本,并知道是否需要更新它。问题是...怎么样?更新应用程序OTA

有没有一种方法可以从网站下载APK并开始安装过程?用户将不得不确认,但我只想为他启动。目前我正在这样做:

private void doUpgrade() { 
    // TODO Auto-generated method stub 
    Builder builder = new AlertDialog.Builder(this); 
    builder.setTitle(getString(R.string.upgrade)); 
    builder.setIcon(R.drawable.help); 
    builder.setMessage(getString(R.string.needUpgrade)); 
    builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 

      Map<String, String> data = new HashMap<String, String>(); 

      try { 
       HttpResponse re = Registration.doPost("http://www.android-town.com/appRelease/AndroidTown.apk",data); 

       int statusCode = re.getStatusLine().getStatusCode(); 
       closeApp(); 

      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), getString(R.string.noURLAccess), Toast.LENGTH_SHORT).show(); 
       closeApp(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), getString(R.string.noURLAccess), Toast.LENGTH_SHORT).show(); 
       closeApp(); 
      } 
     } 
    }); 
    builder.setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { 

     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      // TODO Auto-generated method stub 
      dialog.cancel(); 
      closeApp(); 
     } 
    }); 
    builder.show(); 
} 

但它并没有真的做任何事......我应该打开一个带有URL的webView?一个新的可运行线程?任何其他方式?请帮助:)

干杯

回答

2

最简单的就是启动一个Intent来打开Browser中的下载URL。这将下载APK,然后用户可以通过在下载管理器中点击进行安装。

您的意思是说,这将处理独立于市场的OTA,因此用户在初次安装应用程序时应该已经禁用了“允许来自非市场来源的应用程序”。

+1

这里有回声吗? ;) – 2010-04-06 15:53:18

+0

我的理解是,你建议他自己下载apk,然后从磁盘安装它。 – alexanderblom 2010-04-06 17:40:47

1

刚一说明,这是不可能很好地工作:大多数设备都配备了禁用选项中的“非市场来源的应用”(在设置>应用程序)。

这意味着当您启动安装应用程序的意图时,用户将会看到一个警告对话框,安装将失败。

虽然您可以针对新更新(例如,检查服务器上的文本文件)检查外部来源并通知用户,但我会将其重定向到Android Market自己进行升级。

+0

嗯......这是一个耻辱。但是我猜如果没有别的办法,就必须这样做。只是为了测试目的,拥有这样的功能真的很不错,而且不必让测试者下载apk并将其传输到手机并安装它... – Bostjan 2010-04-06 13:40:33

+1

如果它仅适用于beta测试者,我肯定你可以让他们启用“非市场”选项。 – 2010-04-06 13:45:26

1

正如大家所说的“允许来自非市场来源的应用程序”选项对您来说可能是一个真正的痛苦,因为除beta测试者之外的人或者像他们这样的人不会为varoius原因检查此选项。尝试Testflight,它应该有所帮助。 https://testflightapp.com/android/

+1

突然间,制造Testflight的公司已被苹果收购。未来很有可能它不再支持Android。这也是一个很好的OTA服务:https://www.otaupdatecenter.pro/ – 2014-05-14 10:25:20