Обновление приложения OTA - PullRequest
4 голосов
/ 06 апреля 2010

Я занимаюсь разработкой приложения, которое будет доступно на веб-сайте (вероятно, на рынке). Проблема, с которой я столкнулся на данный момент, заключается в том, как обрабатывать обновления приложения. Я знаю, как сравнить версию с текущей и знаю, нужно ли мне ее обновлять. Вопрос ... как?

Есть ли способ загрузить 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();
}

Но на самом деле это ничего не делает ... я должен открыть webView с URL? Новая работоспособная нить? Любым другим путем? Пожалуйста, помогите:)

Приветствия

Ответы [ 3 ]

2 голосов
/ 06 апреля 2010

Проще всего запустить Intent, чтобы открыть URL загрузки в Browser. Это загрузит APK, и пользователь сможет установить его, щелкнув по нему в диспетчере загрузок.

Вы говорите, что это будет обрабатывать OTA отдельно от рынка, поэтому пользователь должен был уже отключить «Разрешить приложения из нерыночных источников» при первоначальной установке вашего приложения.

1 голос
/ 05 декабря 2013

Как уже говорили, вариант «Разрешить приложения из источников, не относящихся к рынку» может быть для вас серьезной болью, так как люди, не являющиеся бета-тестерами или им подобные, не будут заинтересованы в проверке этой опции по различным причинам. Попробуйте Testflight, это должно помочь. https://testflightapp.com/android/

1 голос
/ 06 апреля 2010

Просто обратите внимание, что это вряд ли будет работать хорошо: большинство устройств поставляются с отключенной опцией «Разрешить приложения из нерыночных источников» (в меню «Настройки»> «Приложения»).

Это означает, что при запуске намерения установить приложение пользователь получит диалоговое окно с предупреждением и установка не удастся.

Несмотря на то, что вы можете проверять наличие обновлений у внешнего источника (например, проверять текстовый файл на вашем сервере) и уведомлять пользователя, я бы перенаправил их на сам Android Market, чтобы выполнить обновление.

...