Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2023
er_lolo er_lolo is offline
Miembro
 
Registrado: may 2016
Posts: 16
Poder: 0
er_lolo Va por buen camino
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;
Perdón por no citar el autor, pero no vi de quien era...

El caso es que no consigo que funcione, alguna forma mas sencilla de ejecutar un APK?.

Un saludo y gracias.
Responder Con Cita
  #2  
Antiguo 03-05-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No es tan simple, además tendrás que dar permiso REQUEST_INSTALL_PACKAGES, que recuerde, y MANAGE_UNKNOWN_APP_SOURCES.
Responder Con Cita
  #3  
Antiguo 04-05-2023
er_lolo er_lolo is offline
Miembro
 
Registrado: may 2016
Posts: 16
Poder: 0
er_lolo Va por buen camino
Si, lo de dar permisos de aplicaciones desconocidas los esperaba, pero de momento no he conseguido mucho. Seguiré investigando....
Responder Con Cita
  #4  
Antiguo 04-05-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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
Responder Con Cita
  #5  
Antiguo 04-05-2023
er_lolo er_lolo is offline
Miembro
 
Registrado: may 2016
Posts: 16
Poder: 0
er_lolo Va por buen camino
Gracias, voy a estudiarlo!
Responder Con Cita
  #6  
Antiguo 21-06-2023
er_lolo er_lolo is offline
Miembro
 
Registrado: may 2016
Posts: 16
Poder: 0
er_lolo Va por buen camino
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;
He añadido la siguiente unit: "github.com/DelphiWorlds/KastriFree/blob/master/API/DW.Androidapi.JNI.FileProvider.pas"

Ahora el error que obtengo es: "Java type JFileProvider could not be found", y no se por donde seguir
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Auto.incrementar yevabas Conexión con bases de datos 4 13-02-2012 17:44:04
Buen auto BMW Alexandro Humor 0 14-04-2009 17:27:37
EAN 128 Auto Switch ?? ofillia Varios 2 02-02-2007 19:07:03
auto incremento valentino MySQL 1 14-02-2005 12:59:33
Auto borrado brandolin Varios 6 27-09-2003 21:18:37


La franja horaria es GMT +2. Ahora son las 05:01:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi