Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 06/10/16, 19:41:50
Array

[xs_avatar]
c2alvaro c2alvaro no está en línea
Miembro del foro
 
Fecha de registro: may 2015
Localización: Venezuela
Mensajes: 67
Modelo de smartphone: Galaxy S4 mini
Tu operador: Movistar
Error en App auto actualizable

Saludos compañeros, mi aplicacion no esta en la tienda de Google, por lo que tengo este codigo para descargar un archivo .apk desde un WebService que seria la nueva versión de la app e instalarlo, pero tengo un error al momento de realizar la instalación: "Error de Analisis Se ha producido un error durante el analisis del paquete"
El archivo se descarga bien, si ejecuto el archivo desde la ubicacion de descarga "downloads" puedo instalar la app pero quiero que se instale una vez terminada la descarga desde la misma app en ejecución, gracias por sus comentarios.

Código:
try {
        String ruta="http://webservice/aplication.apk";

        URL obj = new URL(ruta);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        con.setRequestMethod("GET");
        con.setDoOutput(true);
        con.connect();

        File PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        File archivo = new File(PATH,"archivo.apk");

        FileOutputStream fileOutput = new FileOutputStream(archivo);
        InputStream inputStream = con.getInputStream();

        //obtendremos el tamaño del archivo y lo asociaremos a una
        //variable de tipo entero
int totalSize = con.getContentLength();
        int downloadedSize = 0;

        byte[] buffer = new byte[1024];
        int bufferLength = 0;

        while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
            downloadedSize += bufferLength;
            fileOutput.write(buffer, 0, bufferLength);
        }

        fileOutput.close();
        inputStream.close();

        
//aca el codigo para instalar la nueva app, el archivo se descarga bien completo
//pero da el error de analisis del paquete
Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS) + "archivo.apk")),
                "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        contexto.startActivity(intent);

        texto="000";
    }
    catch (Exception e) {
        //texto= e.toString();
Log.v("Error  ",e.toString());
        texto="0001";
    }
    return texto;
}

Última edición por c2alvaro Día 06/10/16 a las 19:48:07.
Responder Con Cita


  #2  
Viejo 06/10/16, 23:47:32
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Lo único que se me ocurre es que el fichero no se haya terminado de escribir justo cuando vas a ejecutarlo, que es inmediatamente después de terminar su descarga.

Prueba poniendo un flush justo antes de cerrar el OutputStream:

fileOutput.flush();

Así obligas al sistema a que termine de realizar todas las operaciones de disco pendientes antes de continuar.
Responder Con Cita
  #3  
Viejo 07/10/16, 00:03:26
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
Para ver si el problema está en el APK o en el Intent, como lo has descargado al directorio de descargas, prueba a abrirlo desde ahí con un explorador de archivos, comprobar MD5, tamaño....

Asegúrate de haber firmado también correctamente el APK de la nueva versión (con el mismo certificado)
Responder Con Cita
  #4  
Viejo 10/10/16, 15:52:47
Array

[xs_avatar]
c2alvaro c2alvaro no está en línea
Miembro del foro
 
Fecha de registro: may 2015
Localización: Venezuela
Mensajes: 67
Modelo de smartphone: Galaxy S4 mini
Tu operador: Movistar
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Lo único que se me ocurre es que el fichero no se haya terminado de escribir justo cuando vas a ejecutarlo, que es inmediatamente después de terminar su descarga.

Prueba poniendo un flush justo antes de cerrar el OutputStream:

fileOutput.flush();

Así obligas al sistema a que termine de realizar todas las operaciones de disco pendientes antes de continuar.
Gracias amigo kriogen por tus comentarios, voy hacer la prueba
Responder Con Cita
  #5  
Viejo 10/10/16, 15:56:52
Array

[xs_avatar]
c2alvaro c2alvaro no está en línea
Miembro del foro
 
Fecha de registro: may 2015
Localización: Venezuela
Mensajes: 67
Modelo de smartphone: Galaxy S4 mini
Tu operador: Movistar
 Cita: Originalmente Escrito por Dexafree Ver Mensaje
Para ver si el problema está en el APK o en el Intent, como lo has descargado al directorio de descargas, prueba a abrirlo desde ahí con un explorador de archivos, comprobar MD5, tamaño....

Asegúrate de haber firmado también correctamente el APK de la nueva versión (con el mismo certificado)
Gracias amigo Dexafree por tus comentarios, efectivamente el archivo es descargado en la carpeta descargas, y si lo busco en esa ubicación con un administrador de archivos y lo instalo funciona bien, lo que me dice que el archivo se descargo sin problemas (completo) el problema es cuando la misma app intenta abrir el archivo despues de realizar la descarga
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 09:23:26 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /