![]() |
![]() |
![]() |
![]() |
![]() |
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 ![]() |
![]() |
|
|
![]() |
||||
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 |
![]() |
|