![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
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 |
|
#2
|
|||
|
|||
|
Si, lo de dar permisos de aplicaciones desconocidas los esperaba, pero de momento no he conseguido mucho. Seguiré investigando....
|
|
#3
|
||||
|
||||
|
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 |
|
#4
|
|||
|
|||
|
Gracias, voy a estudiarlo!
|
|
#5
|
|||
|
|||
|
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 ![]() |
|
#6
|
||||
|
||||
|
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 |
|
#7
|
|||
|
|||
|
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. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
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 |
|