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 :

Problème d'accès à GetSharedDocumentsPath sur Android


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut Problème d'accès à GetSharedDocumentsPath sur Android
    Bonsoir à tous,

    j'ai des difficultés à écrie un fichier dans le répertoire Documents sur Android. J'ai fait plusieurs tentatives avec les variables systèmes. Ma dernière :

    NomMabaseExportee := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedDocumentsPath, 'Base.csv');

    Est ce que quelqu'un sait comment on peut écrire dans le répertoire Documents ou le répertoire Téléchargement éventuellement ?


    Merci pour votre aide.

    Pascal

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    attention, sous Android il y a des droits beaucoup plus stricts que sous Windows, pour accéder au dossier publique il faut en demander l'autorisation.

    https://www.developpez.net/forums/d2...r-permissions/
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut Probleme d'exemple
    Bonjour,

    J'ai lu et relu les messages mais je ne trouve pas la solution à mon problème.

    un petit exemple concret serait le bienvenu.

    Pascal

  4. #4
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut Probleme pour acceder a mon fichier
    Bonsoir,

    voici mon code en me basant sur le code qu'on m'a donné ci-dessus :

    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
    {$IFDEF ANDROID}
    function TfrmParametres.PermissionAndroid : boolean;
    begin
    PermissionsService.RequestPermissions(['android.permission.WRITE_INTERNAL_STORAGE'],
       procedure(const APermissions: TClassicStringDynArray;
          const AGrantResults: TClassicPermissionStatusDynArray)
      begin
        if (Length(AGrantResults) = 1) and
          (AGrantResults[0] = TPermissionStatus.Granted) then
        begin
           // autorisation reçue, faire ce qu'on ferait si on n'était pas sous Android
        end
        else
        begin
          // Pas d'autorisation, c'est triste, mais c'est son droit
        end;
      end,
      procedure(const APermissions: TClassicStringDynArray;
        const APostRationaleProc: TProc)
      begin
        // affiche un message à l'utilisateur pour justifier de la demande de permission (par exemple ShowMessage)
        // appelle APostRationaleProc en sortie (sur le bouton du ShowMessage par exemple)
      end);
     
      result:=PermissionsService.IsPermissionGranted('android.permission.WRITE_INTERNAL_STORAGE');
    end;
    {$ENDIF}

    J'ai inventé android.permission.WRITE_INTERNAL_STORAGE en passant en revue toutes les constantes définies, mon but c'est de pouvoir écrire dans le répertoire "Documents" de mon téléphone.

    Un petit coup de main s'il vous plaît.

    Merci d'avance pour partager vos connaissances.

    Pascal

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je n'ai pas la réponse, mais c'est un problème Android, tu trouveras la réponse à ta question dans la doc Android

    déjà, TPath.GetSharedDocumentsPath utiliser getExternalStoragePublicDirectory qui n'est plus utilisé sous Android Q...tout change tout le temps sous Android :/

    Ensuite, il faut suivre les erreurs (que tu ne donnes pas) car elles dépendent de ta version de Android et du niveau d'API

    si je cherche getExternalStoragePublicDirectory et access denied par exemple
    https://stackoverflow.com/questions/...ied-on-android

    bref, développer sous Android (ou iOS) c'est plutôt simple avec Delphi, mais on ne peut pas s'affranchir de se documenter sur l'OS lui même quand il est question de dialoguer avec l'extérieur (disque, réseau, autres applications...) voir même de suivre le cycle de vie de l'application qui n'a aucun rapport avec celui d'une appli Windows (et même OSX ou Linux d'ailleurs).

    sinon en cherchant un peu sur Google on trouve cet exemple Delphi
    https://github.com/Embarcadero/RADSt...heet/uMain.pas

    qui utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      FPermissionReadExternalStorage := JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE);
      FPermissionWriteExternalStorage := JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE);
    non, on n'invente pas les droits, on regarde ce qui dit la doc
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 70
    Par défaut
    salut peut être ça t'aidera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
      SourcePath := TPath.Combine(TPath.GetDocumentsPath, 'NomFic.sdb'); 
      DestPath := TPath.Combine(TPath.GetSharedDocumentsPath, 'NomFic.sdb');//copie dans stockage interne /documents
      TFile.Copy(SourcePath, DestPath, true);     //true = delete fichier si il éxiste
      Notifie('Fichier copié ');
    end;

  7. #7
    Membre actif
    Homme Profil pro
    programmeur
    Inscrit en
    Août 2023
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : programmeur
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2023
    Messages : 33
    Par défaut Problèmes d'unités ....
    @Paul
    merci pour ton aide mais pourrais tu m'aider en me donnant les uses qu'il faut que j'ajoute à mon code. J'ai cherché avec google sans succès.

Discussions similaires

  1. problème d'accès à Mysql (sur windows server 2003)
    Par laure07 dans le forum Administration
    Réponses: 3
    Dernier message: 07/09/2011, 09h34
  2. Problème d'accès à Hotmail sur Windows 7
    Par Zizou7 dans le forum Windows 7
    Réponses: 1
    Dernier message: 22/09/2010, 19h22
  3. Problème exécution accès JDBC sur UNIX :
    Par comboDev dans le forum JDBC
    Réponses: 10
    Dernier message: 10/04/2009, 15h42
  4. Problème d'accès données sur serveur externe
    Par clegosles dans le forum IIS
    Réponses: 0
    Dernier message: 21/02/2008, 11h03

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