Portal Android - Comunidade de Desenvolvedores Android
http://www.portalandroid.org/comunidade/

(Resolvido) Erro ao atualizar .apk via código
http://www.portalandroid.org/comunidade/viewtopic.php?f=2&t=31477
Página 1 de 1

Autor:  williamgt [ 14 Nov 2019, 19:22 ]
Assunto do Tópico:  (Resolvido) Erro ao atualizar .apk via código

Boa tarde criei, um aplicativo que possui classe de atualização automática. A partir do Android 5.0 a classe de atualização parou de funcionar e aparece a seguinte mensagem de erro:

"existe um problema de analise do pacote"

segue abaixo código do método:

public void AtualizaAplicativo(int Versao, int Revisao)
            throws XmlPullParserException {
        URL = "AtualizaVersao";
        JSONObject obj = new JSONObject();
        try {

            if (Atualiza == 1) {
                ativDao.deletar();
                ativDao.onUpgrade();
                String caminho = "/mnt/sdcard/download/dcim";

                int count = 0;

                File fileDestino = new File(caminho,
                        "update.apk");
                // "com.example.labtec.login.apk");
                File file = new File(caminho);
                if (!file.exists()) {
                    file.mkdir();
                }
                vers = new Versao(versao, revisao, IdUpdate);
                WSConnection con = new WSConnection(Autenticacao.this, URL);
                obj.put("IdUpdate", IdUpdate);
                String results[] = con.post(obj.toString());

                JSONObject objs = new JSONObject(results[1]);
                obj = new JSONObject(objs.getString("AtualizaVersaoResult"));
                byte[] Arquivo=new  byte[1024];
                 Arquivo = Base64.decode(obj.getString("Arquivo"), 0);
                OutputStream output = new FileOutputStream(fileDestino);

                BufferedOutputStream objectOut = new BufferedOutputStream(new FileOutputStream(fileDestino));
                objectOut.write(Arquivo);
//                InputStream input = new ByteArrayInputStream(Arquivo);
//
//                while ((count = input.read(Arquivo)) != -1) {
//                    output.write(Arquivo, 0, count);
//                }
                objectOut.flush();
                objectOut.close();
                //output.flush();
               // output.close();
                //input.close();

                String caminho2 = caminho + "/update.apk";
                @SuppressWarnings("unused")
                int tamanho = Arquivo.length;
                if (Arquivo.length > 0) {



                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    intent.setDataAndType(uriFromFile(getApplicationContext(),new File(caminho2)),
                            "application/vnd.android.package-archive");
                    startActivity(intent);
                } else {
                    Erro = "Erro ao Atualizar";
                }
            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            Erro = e.getMessage().toString();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Erro = e.getMessage().toString();
        } catch (RuntimeException e) {
            try {
                Erro = e.getMessage().toString();
            } catch (NullPointerException e1) {
                Erro = "Erro de download de arquivo,atualização não pode ser concluida!";
            }

        } catch (OutOfMemoryError e) {
            Erro = "Estouro de Memória do Aparelho";
        }

    }

Autor:  williamgt [ 28 Nov 2019, 13:01 ]
Assunto do Tópico:  Re: Erro ao atualizar .apk via código

Encontrei a solução estava compactando a .apk para salvar no banco de dados, apenas salvei ela sem compactar.

Autor:  igor.chemin [ 29 Jan 2020, 15:25 ]
Assunto do Tópico:  Re: (Resolvido) Erro ao atualizar .apk via código

Boa tarde,
este código seria para baixar um .apk novo da atualização do seu sistema e já instalar sobre a versão que esta rodando no dispositivo?

Estou perguntando pois estou com esta dificuldade tenho um .apk rodando nos clientes que não esta pela loja da google e tenho que atualizar ele, preciso fazer um código para isso que acredito que seja igual ao seu que postou, para baixar o .apk novo re-instalar no dispositivo do cliente mesmo que seja por uma opção dentro do aplicativo.
poderia dar mais detalhes ou mesmo disponibilizar o trecho do código caso seja esta mesma a funcionalidade do código.

desde já agradeço sua atenção!

Página 1 de 1 Todos os Horários estão como UTC - 2 horas [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/