IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Ouverture d'un fichier PDF sur [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 55
    Points
    55
    Par défaut Ouverture d'un fichier PDF sur
    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 !

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    il faut passer par un FileProvider

    https://www.journaldunet.fr/web-tech...ntent-getdata/
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Points : 55
    Points
    55
    Par défaut
    J'ai beaucoup cherché une solution qui se tienne pour Android ... et ce n'est pas si simple (enfin, c'est mon avis )

    Le mieux étant de fournir mon projet complet pour illustrer mes propos ... Je n'ai pas réinventer la roue, j'ai trouvé différentes sources qui m'ont permis d'arriver à mes fins.

    J'invite les connaisseurs à me faire part de leurs impressions !
    Merci à Paul TOTH de m'avoir aiguillé sur le sujet

    FMX External File Viewer.7z

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'ouverture de fichier pdf sur un serveur
    Par naoki44 dans le forum VBA Access
    Réponses: 8
    Dernier message: 28/06/2017, 22h34
  2. Ouverture fichier pdf sur serveur
    Par nddvlp dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 20/04/2012, 11h15
  3. Ouverture d'un fichier PDF
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 03/02/2009, 17h09
  4. Réponses: 8
    Dernier message: 09/11/2005, 16h24
  5. [Système] ouverture d'un fichier pdf
    Par joneil dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 17/05/2005, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo