4

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

有没有办法可以从网站下载 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 吗?一个新的可运行线程?还有什么办法吗?请帮忙 :)

干杯

4

3 回答 3

2

最简单的方法就是启动一个Intent以在Browser. 这将下载,APK然后用户可以通过在下载管理器中单击它来安装它。

您是说这将处理与市场分开的 OTA,因此用户在最初安装您的应用程序时应该已经禁用“允许来自非市场来源的应用程序”。

于 2010-04-06T14:15:09.330 回答
1

请注意,这不太可能正常工作:大多数设备都禁用了“允许来自非市场来源的应用程序”选项(在“设置”>“应用程序”下)。

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

虽然您可以检查外部源是否有新更新(例如检查服务器上的文本文件)并通知用户,但我会将它们重定向到 Android Market 本身进行升级。

于 2010-04-06T13:18:27.670 回答
1

正如每个人所说的那样,“允许来自非市场来源的应用程序”选项对您来说可能是一个真正的痛苦,因为除了 beta 测试人员或像他们一样的人,出于各种原因,他们不会有兴趣检查此选项。试试Testflight,它应该会有所帮助。 https://testflightapp.com/android/

于 2013-12-05T04:25:56.187 回答