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 Buscar Temas de Hoy Marcar Foros Como Leídos


 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-01-2019
Avatar de turbopascual5.0
turbopascual5.0 turbopascual5.0 is offline
Miembro
 
Registrado: feb 2011
Posts: 54
Poder: 14
turbopascual5.0 Va por buen camino
Abrir Pdf En Api 26

Hola.

Al compilar para api 26 en Rio, al abrir un pdf obtengo este error que antes no aparecía

android.os.FileUriExposedException: file:///Storage/emulated/0/Download/AppDataDetails/trabajo.pdf exposed beyond app through Intent.getData()

El código es

Código Delphi [-]
     URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + ficheropuente));
      intent := TJIntent.Create;
      intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
      intent.setDataAndType(URI,StringToJString('application/pdf'));
      Tandroidhelper.Activity.startActivity(intent);[/font][/color]

Buscando he encontrado una solución


You'll need this unit:
https://github.com/DelphiWorlds/Kast...leProvider.pas
for this code:

uses Androidapi.JNI.JavaTypes, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers;procedure OpenPDF(const 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/pdf')); LIntent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); TAndroidHelper.Activity.startActivity(LIntent);end;




Pero ahora me da error

java.lang.illegalArgumentsException Failed to find configured root that contains /file: /data/user/0/com.embarcadero.PRODUCCION/files/trabajo.pdf

El pdf lo leo de una base de datos y lo grabo así:

Código Delphi [-]
ficheropuente:=TPath.Combine(TPath.GetPublicPath, 'trabajo.pdf');
TBlobField(uniquery2documento).SaveToFile(ficheropuente);

Alguna idea?, gracias de antemano





Última edición por Neftali [Germán.Estévez] fecha: 31-01-2019 a las 08:23:00. Razón: Añadir TAG's al código
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
abrir pdf yossi Varios 3 07-07-2010 03:26:27
Abrir un URL Willo Varios 1 26-11-2008 18:11:54
abrir una dll. REHome .NET 2 30-08-2007 16:55:28
Abrir HTML con IE CarmaZone Varios 1 07-06-2005 22:31:34
Abrir un archivo PDF mamen .NET 4 30-03-2005 12:32:49


La franja horaria es GMT +2. Ahora son las 04:48:26.


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