FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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); var Intent: JIntent; F: Jfile; begin 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; El caso es que no consigo que funcione, alguna forma mas sencilla de ejecutar un APK?. Un saludo y gracias. |
#2
|
||||
|
||||
No es tan simple, además tendrás que dar permiso REQUEST_INSTALL_PACKAGES, que recuerde, y MANAGE_UNKNOWN_APP_SOURCES.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Si, lo de dar permisos de aplicaciones desconocidas los esperaba, pero de momento no he conseguido mucho. Seguiré investigando....
|
#4
|
||||
|
||||
No es Delphi, pero a ver si esto te sirve de referencia:
Código:
Private Sub SendInstallIntent Dim ApkName As String = kcTmpApk ''' "tmp.apk" Dim i As Intent If phone.SdkVersion >= 24 Then 'Nougat 7.0 i.Initialize("android.intent.action.INSTALL_PACKAGE", GetFileUri(ApkName)) i.Flags = Bit.Or(i.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION Else i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(SharedFolder, ApkName)) i.SetType("application/vnd.android.package-archive") End If StartActivity(i) End Sub Private Sub GetFileUri (FileName As String) As Object If UseFileProvider = False Then Dim uri As JavaObject Return uri.InitializeStatic("android.net.Uri").RunMethod("parse", Array("file://" & File.Combine(SharedFolder, FileName))) Else Dim f As JavaObject f.InitializeNewInstance("java.io.File", Array(SharedFolder, FileName)) Dim fp As JavaObject Dim context As JavaObject context.InitializeContext fp.InitializeStatic("android.support.v4.content.FileProvider") Return fp.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f)) End If End Sub
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
Gracias, voy a estudiarlo!
|
#6
|
|||
|
|||
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); var LIntent: JIntent; LAuthority: JString; LUri: Jnet_Uri; begin LAuthority := StringToJString(JStringToString(TAndroidHelper.Context.getApplicationContext.getPackageName)+'.fileprovider'); LUri := TJFileProvider.JavaClass.getUriForFile(TAndroidHelper.Context, LAuthority, TJFile.JavaClass.init(StringToJString(AFileName))); LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW); LIntent.setDataAndType(LUri, StringToJString('application/vnd.android.package-archive')); LIntent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); TAndroidHelper.Activity.startActivity(LIntent); end; Ahora el error que obtengo es: "Java type JFileProvider could not be found", y no se por donde seguir |
#7
|
||||
|
||||
En teoría algo más o menos así:
No sé por qué sale "Contex.getPackageName" separado el "Name" del "getPackage"
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
|||
|
|||
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. |
#9
|
||||
|
||||
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:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
|||
|
|||
Tengo en este repositorio de GitHub un ejemplo para lo que buscas:
https://github.com/dani36652/Delphi-...o-Actualizable |
#11
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#12
|
|||
|
|||
Mil gracias, ahora lo reviso!.
|
#13
|
|||
|
|||
Cita:
Funciono perfectamente, Gracias a todos por la ayuda!. |
#14
|
|||
|
|||
Un gusto audar a la comunidad Delphi
|
#15
|
|||
|
|||
Hello,
Can you give a summary of what you did? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Auto.incrementar | yevabas | Conexión con bases de datos | 4 | 13-02-2012 18:44:04 |
Buen auto BMW | Alexandro | Humor | 0 | 14-04-2009 18:27:37 |
EAN 128 Auto Switch ?? | ofillia | Varios | 2 | 02-02-2007 20:07:03 |
auto incremento | valentino | MySQL | 1 | 14-02-2005 13:59:33 |
Auto borrado | brandolin | Varios | 6 | 27-09-2003 22:18:37 |
|