Bonjour,

J'aimerais avoir quelques conseils avisés pour ouvrir un document PDF depuis mon application (Android et iOS).
Je m'explique :
- mon application permet de parcourir des répertoires de la mémoire du téléphone (je fais les demandes d'autorisations et ça passe tout seul !)
- pour chaque répertoire, je liste les fichiers qu'il contient (des images et des PDF)
- et j'aimerais ouvrir les fichiers PDF par le biais de mon application



Mais je n'arrive pas à m'en sortir avec l'utilisation des JIntent et des JActivity. J'ai trouvé le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
var
  &OriginalFile, PublicDirectoryFile, PublicFile: JFile;
  PublicDirectoryPath, PublicPath: string;
 
  Uri: Jnet_Uri;
  Intent: JIntent;
begin
  inherited;
 
  if Path.StartsWith(System.IOUtils.TPath.GetDocumentsPath()) then begin
    &OriginalFile := TJFile.JavaClass.init(StringToJString(Path));
 
    PublicDirectoryPath := (JStringToString(TJEnvironment.JavaClass.getExternalStorageDirectory.getAbsolutePath) + '/Documents');
    PublicPath := PublicDirectoryPath + PathDelim + ExtractFileName(Path);
 
    PublicDirectoryFile := TJFile.JavaClass.init(StringToJString(PublicDirectoryPath));
    if (not PublicDirectoryFile.exists) then begin
      PublicDirectoryFile.mkdir;
    end;
 
    if (not FileExists(PublicPath)) then
      TFile.Copy(JStringToString(&OriginalFile.getAbsolutePath), PublicPath);
 
    PublicFile := TJFile.JavaClass.init(StringToJString(PublicPath));
  end
  else begin
    PublicFile := TJFile.JavaClass.init(StringToJString(Path));
  end;
 
  Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW);
  Uri := TJnet_Uri.JavaClass.fromFile(PublicFile);
//  Intent.setDataAndType(Uri, StringToJString('application/pdf'));
  Intent.setDataAndType(Uri, self.GetMimeType(Uri));
  Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY);
 
  TAndroidHelper.Activity.startActivity(Intent);
end;
Mais j'ai le message d'erreur :

android.os.FileUriExposedException: file:///storage/emulated/o/Documents/xxx.pdf exposed beyond app through Intent.getData()

et là, je sèche !