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 08/06/15, 16:31:43
Array

[xs_avatar]
ciberdrac ciberdrac no está en línea
Usuario poco activo
 
Fecha de registro: oct 2009
Mensajes: 20
Modelo de smartphone: s200

Actualizar aplicación Android desde internet.

Hola, quería preguntar como podría implementar una opción en un programa para su posible actualización desde un sitio de internet, ( pagina web, dropbox, drive, etc.), me refiero a que cuando el usuario pulse la opción actualizar, la aplicación revise en el sitio predeterminado para ello si hay alguna actualización disponible y la baje si es el caso.

resumiendo, me refiero a la posibilidad de actualizar una aplicación vía internet sin tener que depender del Google Play,. espero haberme explicado bien.

Un saludo.
Responder Con Cita


  #2  
Viejo 08/06/15, 16:48:59
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
Realizando la descarga del APK con el DownloadManager. Luego puedes hacer que el APK se lance al terminar la descarga.

El usuario siempre tendrá que aceptar la actualización, ya que le saldrá como si fuese una instalación nueva del APK sólo que indicando los permisos que realmente son nuevos.

Si buscas una manera de hacerlo automáticamente como hace Google Play, no se puede, al menos sin ser Root. Ni siquiera tiendas alternativas como Amazon Apps pueden hacerlo automáticamente.
Responder Con Cita
  #3  
Viejo 08/06/15, 20:10:22
Array

[xs_avatar]
TheXicotet TheXicotet no está en línea
Usuario poco activo
 
Fecha de registro: mar 2015
Mensajes: 35
Tu operador: Orange

KriogeN tiene toda la razón, sin embargo, puedes avisar de forma automática que hay una actualización disponible de la siguiente manera:

-Creas una clase de java en tu aplicacion que se conecte a tu servidor cuando haya un evento (por tiempo o cuando le de el usuario a un boton, por ejemplo). La clase java mandará al server la rev. en la que está la aplicación instalada y tú la comparas con la que hay para descargarse.

if(revInstalada!=revDescarga) descargasAplicación();

Una vez descargada puedes hacer (como bien ha dicho kriogeN) que se instale automáticamente (eso si, el usuario debe aceptar los permisos que utiliza la aplicación, etc.). Como la aplicación que se instala tiene el mismo nombre de paquete que la antigua y solo cambia la rev. android te sustituirá la aplicación antigua por la nueva.

Un saludo
Responder Con Cita
  #4  
Viejo 09/06/15, 12:26:46
Array

[xs_avatar]
ciberdrac ciberdrac no está en línea
Usuario poco activo
 
Fecha de registro: oct 2009
Mensajes: 20
Modelo de smartphone: s200

Gracias, la teoría la he captado, la solución de kriogeN no la veo adecuada, ya que el usuario para comprobar si la aplicación tiene algún cambio debería descargarla, me resulta más interesante la alternativa tuya TheXicotet, lo que no tengo ni idea es como obtener la revisión de la aplicación que tenemos para descargar, agradecería un ejemplo de como averiguar si la versión instalada de la aplicación es anterior a la versión que tenemos para descargar.

Un saludo y gracias.
Responder Con Cita
  #5  
Viejo 09/06/15, 16:23:26
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
 Cita: Originalmente Escrito por ciberdrac Ver Mensaje
Gracias, la teoría la he captado, la solución de kriogeN no la veo adecuada, ya que el usuario para comprobar si la aplicación tiene algún cambio debería descargarla, me resulta más interesante la alternativa tuya TheXicotet, lo que no tengo ni idea es como obtener la revisión de la aplicación que tenemos para descargar, agradecería un ejemplo de como averiguar si la versión instalada de la aplicación es anterior a la versión que tenemos para descargar.

Un saludo y gracias.
Yo no te he dicho que la descargues siempre, lo que quería decir es lo mismo que dice TheXicotet.

Lo que trababa de indicar es que no puedes hacer una actualización automática como hace Google Play, siempre tendrá que descargar el APK nuevo e instalarlo con la autorización del usuario. Una vez comprobado que efectivamente es nuevo.

En cuanto a como comprobar si la versión es nueva, necesitarás un servicio web que te lo indique (por ejemplo)
Responder Con Cita
  #6  
Viejo 10/06/15, 14:21:44
Array

[xs_avatar]
TheXicotet TheXicotet no está en línea
Usuario poco activo
 
Fecha de registro: mar 2015
Mensajes: 35
Tu operador: Orange

 Cita: Originalmente Escrito por ciberdrac Ver Mensaje
Gracias, la teoría la he captado, la solución de kriogeN no la veo adecuada, ya que el usuario para comprobar si la aplicación tiene algún cambio debería descargarla, me resulta más interesante la alternativa tuya TheXicotet, lo que no tengo ni idea es como obtener la revisión de la aplicación que tenemos para descargar, agradecería un ejemplo de como averiguar si la versión instalada de la aplicación es anterior a la versión que tenemos para descargar.

Un saludo y gracias.
Lo más fácil es que lo hicieras "manualmente", es decir, subes la nueva apk a tu server sabiendo el número de rev que es, y luego cambias en el código php la constante que se va a comparar con la variable que te va a llegar de la clase java. (no se si es eso lo que querías saber).
Responder Con Cita
  #7  
Viejo 10/06/15, 18:27:53
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

Más fácil todavía, sin php, creas un fichero de texto que se llame version.txt accesible por internet (servidor web, carpeta public de dropbox...) y dentro tenga el texto de la última versión. La aplicación lo descarga por HTTP, comprueba si es el mismo valor que la instalada (la que está ejecutándose vaya) y en su caso descarga el APK.

Cuando lances una actualización, actualizas el fichero version.txt y el apk.

La periodicidad de comprobación, lo mejor es que se haga al ejecutar la app y solo si ya pasó tiempo desde la última comprobación (no es plan gastar recursos de red del usuario innecesariamente)
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #8  
Viejo 10/06/15, 21:24:34
Array

[xs_avatar]
TheXicotet TheXicotet no está en línea
Usuario poco activo
 
Fecha de registro: mar 2015
Mensajes: 35
Tu operador: Orange

 Cita: Originalmente Escrito por mocelet Ver Mensaje
Más fácil todavía, sin php, creas un fichero de texto que se llame version.txt accesible por internet (servidor web, carpeta public de dropbox...) y dentro tenga el texto de la última versión. La aplicación lo descarga por HTTP, comprueba si es el mismo valor que la instalada (la que está ejecutándose vaya) y en su caso descarga el APK.

Cuando lances una actualización, actualizas el fichero version.txt y el apk.

La periodicidad de comprobación, lo mejor es que se haga al ejecutar la app y solo si ya pasó tiempo desde la última comprobación (no es plan gastar recursos de red del usuario innecesariamente)
¿Y que cada vez que enciendas la aplicación se descargue un .txt? Veo más "limpio" y útil la comprobación con un .php porque la clase java con la que conectas la puedes hasta "reutilizar" para conectarte a una DB por ejemplo. Además consume menos enviar una petición a un server que descargarte un .txt, es como matar una mosca a cañonazos...

p.d: Es mi punto de vista, pero respeto totalmente el tuyo
Responder Con Cita
  #9  
Viejo 10/06/15, 21:39:23
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
 Cita: Originalmente Escrito por TheXicotet Ver Mensaje
¿Y que cada vez que enciendas la aplicación se descargue un .txt? Veo más "limpio" y útil la comprobación con un .php porque la clase java con la que conectas la puedes hasta "reutilizar" para conectarte a una DB por ejemplo. Además consume menos enviar una petición a un server que descargarte un .txt, es como matar una mosca a cañonazos...

p.d: Es mi punto de vista, pero respeto totalmente el tuyo
¿Por qué consume menos? Es una petición HTTP igualmente. Lo único es que además del cuerpo con el número de versión también lleva información adicional como el nombre del fichero y su tamaño. ¿De cuanto más hablamos en la descarga? ¿40 bytes? Y eso hablando de la descarga, porque la petición web es exactamente igual.

Además, haciéndolo en PHP te supone tener que usar un servidor. Mientras que con el fichero de texto puede ser un simple fichero compartido en DropBox como ha dicho mocelet.

Estoy de acuerdo en la parte de que es más limpio usando un servidor web (yo todo lo hago con ASP.NET, el PHP no me gusta), y te da muchas más opciones. Pero el tamaño de transferencia no es la excusa.
Responder Con Cita
  #10  
Viejo 10/06/15, 22:56:24
Array

[xs_avatar]
TheXicotet TheXicotet no está en línea
Usuario poco activo
 
Fecha de registro: mar 2015
Mensajes: 35
Tu operador: Orange

 Cita: Originalmente Escrito por kriogeN Ver Mensaje
¿Por qué consume menos? Es una petición HTTP igualmente. Lo único es que además del cuerpo con el número de versión también lleva información adicional como el nombre del fichero y su tamaño. ¿De cuanto más hablamos en la descarga? ¿40 bytes? Y eso hablando de la descarga, porque la petición web es exactamente igual.

Además, haciéndolo en PHP te supone tener que usar un servidor. Mientras que con el fichero de texto puede ser un simple fichero compartido en DropBox como ha dicho mocelet.

Estoy de acuerdo en la parte de que es más limpio usando un servidor web (yo todo lo hago con ASP.NET, el PHP no me gusta), y te da muchas más opciones. Pero el tamaño de transferencia no es la excusa.
Yo soy de los que dice: "Ya que haces algo, hazlo bien.". Tienes razón con lo de que la transferencia no es una excusa, eso si, siempre hablando de pocas peticiones al server. Cuanto menos caña le des a un servidor mejor, y si encima puedes darle menos caña al user mejor también. Veo una tontería descargarte un .txt para comprobar la aplicación, eso si, es útil si no tienes servidor ya que como has dicho puedes ponerlo en cualquier server de almacenamiento gratuito.

Saludos! ^^
Responder Con Cita
  #11  
Viejo 10/06/15, 23:21:08
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,202
Tu operador: -

 Cita: Originalmente Escrito por TheXicotet Ver Mensaje
Yo soy de los que dice: "Ya que haces algo, hazlo bien.". Tienes razón con lo de que la transferencia no es una excusa, eso si, siempre hablando de pocas peticiones al server. Cuanto menos caña le des a un servidor mejor, y si encima puedes darle menos caña al user mejor también. Veo una tontería descargarte un .txt para comprobar la aplicación, eso si, es útil si no tienes servidor ya que como has dicho puedes ponerlo en cualquier server de almacenamiento gratuito.

Saludos! ^^
 Cita: Originalmente Escrito por TheXicotet Ver Mensaje
¿Y que cada vez que enciendas la aplicación se descargue un .txt? Veo más "limpio" y útil la comprobación con un .php porque la clase java con la que conectas la puedes hasta "reutilizar" para conectarte a una DB por ejemplo. Además consume menos enviar una petición a un server que descargarte un .txt, es como matar una mosca a cañonazos...

p.d: Es mi punto de vista, pero respeto totalmente el tuyo
A ver, descargar un txt no es guardar un fichero en ningún sitio ni molestar al usuario. Supongo que la confusión te vendrá de ahí.

La diferencia entre acceder a http://servidor/version.php y http://servidor/version.txt desde el punto de vista de red es... ninguna. Y ciertamente el consumo es mucho menor el del txt que no tiene que ejecutar ningún script.

Un .php devuelve un contenido generado dinámicamente fruto de la ejecución del intérprete de PHP y del script php. Cada vez que solicitas esa URL estás ejecutando un programa en el servidor.

Un .txt sin embargo devuelve un contenido estático, si su contenido es "1.0" eso es lo que devuelve. No hay que interpretar nada ni ejecutar nada, el servidor simplemente devuelve el contenido. Y lo hace muy rápido.

Para este caso concreto de simplemente saber rápidamente cuál es la versión actual, la solución de matar moscas a cañonazos es precisamente la de php, y más para el compañero que preguntaba. Añadir lógica de servidor para algo que no la necesita son ganas de complicarse la vida.

De hecho (esto ya para nota ), con un recurso estático como sería el .txt, se pueden hacer uso de las cabeceras de HTTP If-Modified-Since y Last-Modified, de modo que si el fichero no ha cambiado el servidor devuelve un código 304 Not Modified y no se descarga ni las cabeceras de HTTP. Y esa es la mejor forma de no dar caña a un servidor, no haciéndole trabajar más de lo necesario

P.D: Para el caso normal de 200 OK las cabeceras son equivalentes, de hecho ni siquiera se transmite el nombre del fichero (eso es la URL de petición, tanto para el txt como para el php) y el tamaño (Content-Length) también suele indicarse (si es del txt el tamaño de su contenido, si es de un script, del contenido de la respuesta).
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #12  
Viejo 12/06/15, 01:41:47
Array

[xs_avatar]
ciberdrac ciberdrac no está en línea
Usuario poco activo
 
Fecha de registro: oct 2009
Mensajes: 20
Modelo de smartphone: s200

Después de leer el interesante debate que ha propiciado la cuestión planteada creo que me decantaré por la opción que a propuesto mocelet, ya que la idea que tengo es almacenar el apk en un servicio de alojamiento online del tipo Dropbox, Drive, Mega, etc.

Voy a crear una opción con la cual el usuario pueda comprobar mediante la lectura del número de versión que contendrá el txt si existe una nueva actualización del programa, y que el decida si la descarga o no.

Agradecería vuestra ayuda para orientarme sobre las instrucciones que debo de utilizar para el acceso al txt y la comprobación de su contenido, ya que no tengo experiencia en este tipo de tareas.

Un saludo y muchas gracias por vuestra valiosa ayuda.
Responder Con Cita
  #13  
Viejo 15/06/15, 09:34:39
Array

[xs_avatar]
kaiser75 kaiser75 no está en línea
Miembro del foro
 
Fecha de registro: ene 2011
Mensajes: 493
Modelo de smartphone: Vernee Mars, Galaxy S3
Tu operador: Orange
Yo use algo parecido hace tiempo para actualizar una aplicacion sin depender de Google Play, hay varias librerias para hacer eso facilmente.

UpdateCkecher
WVersionManager
__________________
Responder Con Cita
  #14  
Viejo 05/01/17, 21:09:46
Array

[xs_avatar]
ciberdrac ciberdrac no está en línea
Usuario poco activo
 
Fecha de registro: oct 2009
Mensajes: 20
Modelo de smartphone: s200

Cómo puedo ejecutar la aplicación actualizada que descarga el programa ?.

Saludos.
Responder Con Cita
  #15  
Viejo 09/01/17, 20:36:32
Array

[xs_avatar]
ciberdrac ciberdrac no está en línea
Usuario poco activo
 
Fecha de registro: oct 2009
Mensajes: 20
Modelo de smartphone: s200

Hola, quería ver si alguien puede indicarme cómo abrir una aplicación android desde la propia aplicación android, estoy probando con un ejemplo que he visto pero no lo consigo .
Código:
Intent launchIntent = getPackageManager().getLaunchIntentForPackage("Ruta_Aplicacion.apk");
startActivity(launchIntent);
Responder Con Cita
  #16  
Viejo 16/01/17, 20:10:39
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
Saludos compañero, yo también quería hacer una app auto actualizable sin pasar por la google play, puedes ver mi post en este enlace http://www.htcmania.com/showthread.php?t=1238213 pero al final no pude hacer que la app se auto instalara debido a un error de (Error de Análisis Se ha producido un error durante el análisis del paquete) te comento, mi app trabaja con un login, cuando el usuario inicia sección en la app el webservice que se llamaba verificaba si el usuario tenía la última versión de la app si no fuese así de forma automática se descargaba el archivo apk, todo bien pero cuando termina la descarga y android procede a instalar el apk me sale ese error de análisis del paquete, lo más curioso es que si instalaba el archivo de forma manual no me daba error, bueno ahí tienes el código revisa a ver y me cuentas si logras hacerlo funcionar.
Responder Con Cita
Respuesta

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



Hora actual: 17:31:26 (GMT +2)



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

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