|
||
|
|
|
|||||||
| 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 |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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. |
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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)
__________________
|
|
#4
|
||||
|
||||
|
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. ![]() |
|
#5
|
||||
|
||||
|
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) ![]() |
![]() |
Estás aquí
|
||||||
|
||||||