Pergunta

Estou desenvolvendo um aplicativo que estará disponível em um site (provavelmente também). O problema que estou tendo no momento é como lidar com as atualizações do aplicativo. Eu sei como verificar a versão em relação à atual e sei se preciso atualizá -la. A pergunta é ... como?

Existe uma maneira de baixar um APK no site e iniciar o processo de instalação? O usuário terá que confirmar, é claro, mas eu só quero poder iniciá -lo para ele. No momento estou fazendo isso:

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();
}

Mas isso realmente não faz nada ... devo abrir um WebView com o URL? Um novo thread runnable? Qualquer outra maneira? Por favor ajude :)

Felicidades

Foi útil?

Solução

Mais fácil é apenas lançar um Intent Para abrir o URL de download no Browser. Isso vai baixar o APK e o usuário pode instalá -lo clicando nele no gerenciador de download.

Você está dizendo que isso lidará com o OTA separado para o mercado, para que o usuário já deve ter desativado "permitir aplicativos de fontes que não sejam do mercado" quando instalar seu aplicativo inicialmente.

Outras dicas

Apenas uma observação que isso não funcionará bem: a maioria dos dispositivos vem com a opção "Permitir aplicativos de fontes que não sejam do mercado" desativadas (em Configurações> Aplicativos).

Isso significa que, quando você inicia a intenção de instalar o aplicativo, o usuário receberá uma caixa de diálogo de aviso e a instalação falhará.

Embora você possa verificar uma fonte externa para novas atualizações (por exemplo, verificando um arquivo de texto no seu servidor) e notificar o usuário, eu as redirecionaria para o próprio mercado do Android para fazer a atualização.

Como todos disseram "permitir aplicativos de fontes que não sejam do mercado", a opção pode ser uma dor real para você, pois pessoas que não sejam testadores beta ou como elas não estariam interessadas em verificar essa opção por razões de Varoius. Tente testflight, deve ajudar. https://testflightapp.com/android/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top