我正在开发一个可以从网站(市场也可以)获得的应用程序。我目前遇到的问题是如何处理应用程序的更新。我知道如何检查当前版本的版本,我知道是否需要更新它。问题是......怎么样?
有没有办法从网站下载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吗?一个新的可运行线程?还有其他方法吗?请帮助:)
干杯
答案 0 :(得分:2)
最简单的方法是启动Intent
以在Browser
中打开下载网址。这将下载APK
,然后用户可以通过在下载管理器中单击它来安装它。
您说这将处理与市场分开的OTA,因此用户应该在最初安装您的应用时已禁用“允许来自非市场来源的应用”。
答案 1 :(得分:1)
请注意,这可能无法正常运行:大多数设备都会禁用“允许来自非市场来源的应用”选项(在“设置”&gt;“应用”下)。
这意味着当您启动安装应用程序的意图时,用户将收到警告对话框,安装将失败。
虽然您可以检查外部来源是否有新的更新(例如检查服务器上的文本文件)并通知用户,但我会将其重定向到Android电子市场本身进行升级。
答案 2 :(得分:1)
正如所有人都说的那样“允许来自非市场来源的应用程序”选项对您来说可能是一个真正的痛苦,因为除了beta测试人员之外的其他人或者他们不会因为各种原因检查此选项。试试Testflight,它应该有所帮助。 https://testflightapp.com/android/