![]() |
Auto-actualizar apk
Hola buenas tardes,
Estoy desarrollando una pequeña APK y me gustaría actualizar desde ella misma, para ello he conseguido descargar el APK, pero no consigo ejecutarlo. He encontrado probado este código: Código:
procedure TMainForm.EjecutaAPK(sRuta : String); El caso es que no consigo que funcione, alguna forma mas sencilla de ejecutar un APK?. Un saludo y gracias. |
No es tan simple, además tendrás que dar permiso REQUEST_INSTALL_PACKAGES, que recuerde, y MANAGE_UNKNOWN_APP_SOURCES.
|
Si, lo de dar permisos de aplicaciones desconocidas los esperaba, pero de momento no he conseguido mucho. Seguiré investigando....
|
No es Delphi, pero a ver si esto te sirve de referencia:
Código:
Private Sub SendInstallIntent |
Gracias, voy a estudiarlo!
|
Seguimos intentándolo sin mucho éxito...
He intentando varios códigos, pero no consigo dar con la tecla, lo último que he probado es este código: Código:
procedure TMainForm.OpenAPK(AFileName: string); Ahora el error que obtengo es: "Java type JFileProvider could not be found", y no se por donde seguir :confused: |
En teoría algo más o menos así:
No sé por qué sale "Contex.getPackageName" separado el "Name" del "getPackage" :D |
Gracias por la respuesta,
el Apk lo descargo desde un servidor FTP. La idea era intentar "Ejecutarlo", como ShellExecute en Windows, para que el usuario pudiera seguir con la instalación. Pd. Ya no me sale el error "Java type JFileProvider could not be found", era una ruta que tenia mal configurada, sin embargo, ahora simplemente no hace nada. |
Ya digo, cuando empecé con Android todavía Delphi no compilaba para Android, y utilizo otra cosa.
Pero más o menos es algo así: Cita:
|
Tengo en este repositorio de GitHub un ejemplo para lo que buscas:
https://github.com/dani36652/Delphi-...o-Actualizable |
^\||/^\||/^\||/
|
Mil gracias, ahora lo reviso!.
|
Cita:
Funciono perfectamente, Gracias a todos por la ayuda!. |
Cita:
|
Cita:
Can you give a summary of what you did? |
A continuación, te sugiero que añadas una verificación de permisos antes de intentar ejecutar el APK, ya que las versiones más recientes de Android requieren permisos explícitos para realizar acciones como esta. Podrías intentar algo como esto:
pascal Копировать код uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes; procedure TMainForm.EjecutaAPK(sRuta: String); var Intent: JIntent; F: JFile; begin if not TAndroidHelper.CheckPermission('android.permission.REQUEST_INSTALL_PACKAGES') then begin TAndroidHelper.RequestPermission('android.permission.REQUEST_INSTALL_PACKAGES'); Exit; end; Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.setDataAndType(TAndroidHelper.JFileToJURI(TJFile.JavaClass.init(StringToJString(sRuta))), StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Activity.startActivity(Intent); end; Este fragmento primero verifica si tienes el permiso para instalar APKs y, en caso contrario, lo solicita antes de intentar ejecutar la instalación. Asegúrate también de que el APK que estás intentando ejecutar esté en un lugar accesible para la aplicación, como en el almacenamiento interno. ¡Espero que te sirva! ¡Un saludo! |
La franja horaria es GMT +2. Ahora son las 09:47:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi