Sub InstallAPK(cFolder, cFileApk)
If File.Exists(cFolder , cFileApk) Then
Dim ii As Intent
Log("instalando (1) "& File.Combine(cFolder, cFileApk))
'ii.Initialize(ii.ACTION_VIEW, "file://" & File.Combine(cFolder, cFileApk))
ii.Initialize(ii.ACTION_VIEW, "content://" & File.Combine(cFolder, cFileApk))
Log("instalando (2) "& File.Combine(cFolder, cFileApk))
ii.SetType("application/vnd.android.package-archive")
Log("instalando (3) "& File.Combine(cFolder, cFileApk))
StartActivity(ii)
Log("instalando (4) "& File.Combine(cFolder, cFileApk))
End If
End Sub
El mensaje que me aparece es "No se ha podido analizar el paquete"Hola a todos, despues de un largo tiempo. Los sdk updates me vuelven a traer por aqui.
Este trozo para auto actualizar la App falla:
B4X:Sub InstallAPK(cFolder, cFileApk) If File.Exists(cFolder , cFileApk) Then Dim ii As Intent Log("instalando (1) "& File.Combine(cFolder, cFileApk)) 'ii.Initialize(ii.ACTION_VIEW, "file://" & File.Combine(cFolder, cFileApk)) ii.Initialize(ii.ACTION_VIEW, "content://" & File.Combine(cFolder, cFileApk)) Log("instalando (2) "& File.Combine(cFolder, cFileApk)) ii.SetType("application/vnd.android.package-archive") Log("instalando (3) "& File.Combine(cFolder, cFileApk)) StartActivity(ii) Log("instalando (4) "& File.Combine(cFolder, cFileApk)) End If End Sub
¿ Se puede seguir usando este sistema sin necesidad de cambiar a otras librerias de auto-actualizacion ?
Gracias
¿Has visto este hilo InstallApk de Erel?. Quizás pueda servirte de ayuda.
Hola.
Lo primero de todo, no entiendo tus comentarios sobre el foro. "Exigir" a los demás que solucionen tu problema de manera inmediata no parece muy correcto.
En segundo lugar con la información que nos das es muy dificil poder responderte. El código que aportas puede que funcionase en versiones anteriores de Android pero en las ultimas muchas cosas han cambiado y se requieren permisos añadidos para realizar ciertas funcionalidades. Cosa que tu ejemplo no parece tener en cuenta. Si revisas el enlace indicado por Gabino, veras que alli se utilizan por ejemplo permisos (android.settings.MANAGE_UNKNOWN_APP_SOURCES, android.permission.REQUEST_INSTALL_PACKAGES) para que una aplicación pueda instalar otra aplicación, incluyendose a si misma. Y por supuesto ya no sirve únicamente poner los permisos en el manifiesto del app, debes usar la libreria RuntimePermisions en tu código para solicitar realmente esos permisos al usuario.
Un saludo
Rubén
Pues yo estoy precisamente estoy haciendo pruebas de actualizar la misma aplicación que tengo en ejecución y parece que funciona correctamente siguiendo las instrucciones del hilo que te puse antes.Si vi ese hilo y me parecio que es para instalar una segunda version sin machacar la actual. Yo queria instalar la aplicacion sobre la misma que llama, lo cual no se siquiera si es posible
Si no me equivoco, para los usuarios sin la etiqueta “Licensed user” los mensajes son moderados, es decir, cuando preguntas o contestas, tus mensajes no parecen hasta que son aprobados por Erel.me percaté que los mensajes no suben inmediatamente,
La verdad es que no, hay algún grupo de Facebook pero con apenas movimiento.¿ Alguien conoce otros foros de B4A más "dinámicos" ?
Efectivamente y si no me equivoco, eso es para desde una app, instalar otra. Por ejemplo, lo que hace B4A-Bridge para instalar tu app cuando compilas.Si vi ese hilo y me parecio que es para instalar una segunda version sin machacar la actual
Hola:
No he intentado nunca actualizar una app con mi propio código, sólo he usado Appupdate, aunque ya indicabas que no querías otra librería, creo que es sencilla de implementar. Y si no, puedes ver su código fuente para ver cómo hace la instalación. Aunque creo que sería un poco "reinventar la rueda", ya que esa librería lidia con bastantes cosas, no hay más que ver que tiene que poner permisos en el manifest como PACKAGE_REPLACED, o comprueba que tengamos permisos para instalar otras aplicaciones.
Por otro lado, supongo que solo con el código que has puesto poco se puede intentar adivinar. Sube un proyecto sólo con tu código de actualización que podamos probar, y será más fácil ayudarte.
Efectivamente y si no me equivoco, eso es para desde una app, instalar otra. Por ejemplo, lo que hace B4A-Bridge para instalar tu app cuando compilas.
saludos,
Supongo que dependerá de las versiones de Android que tengas instalada en cada dispositivo.Realmente tengo dos problemas, 1) el anterior que cuando se instala pregunta si "Listo" o "Abrir" y pulsando Abrir cierra y no hace nada.
Y el otro problema 2) es que LA PRIMERA VEZ que se instala desde cero, despues de activar que se pueda instalar desde sitios de no confianza, al pulsar atras, se queda colgado y no hace nada.
Appupdate ?Si alguien nos puede decir como solucionar algunas de las "pegas" que hemos comentado, se agradecería.
Supongo que dependerá de las versiones de Android que tengas instalada en cada dispositivo.
En las que yo he probado, el tema de permisos lo lleva bastante bien, y el tema de lo que hace después de instalar la actualización, se me dan dos casos, o termina la actualización y se cierra sin más, o sale la ventana que comentas y aunque le des a abrir, no hace nada. En mi caso no tiene demasiada importancia ya me supone demasiado problema el picar de nuevo en la aplicación para que se abra, siempre y cuando la actualización la haga y en mi caso, la actualización la descargó previamente del servidor jRDC2.
O sea, en mi caso, aunque no sea 100% "elegante, cubre perfectamente con las necesidades. Que es poder actualizar las aplicaciones de mis clientes sin tener que andar enviado los apk por email o links de descarga.
Si alguien nos puede decir como solucionar algunas de las "pegas" que hemos comentado, se agradecería.
Un saludo.
Appupdate ?
La probaré SEGUROAppupdate ?
He probado el ejemplo de Appupdate.Asi las cosas me pregunto ¿ Alguien tiene una forma sin errores y efectiva de auto-actualizar el apk ?
Public Sub SendInstallIntent
If File.Exists(Starter.Provider.SharedFolder, ApkName) Then
'File.copy(File.DirAssets, ApkName, Starter.Provider.SharedFolder, ApkName)
Dim i As Intent
If phone.SdkVersion >= 24 Then
i.Initialize("android.intent.action.INSTALL_PACKAGE", Starter.Provider.GetFileUri(ApkName))
i.Flags = Bit.Or(i.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION
Else
i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(Starter.Provider.SharedFolder, ApkName))
i.SetType("application/vnd.android.package-archive")
End If
StartActivity(i)
ExitApplication
Else
MsgboxAsync("Fichero de actualización no encontrado: " & ApkName, "AVISO")
End If
End Sub
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?