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

  1. #1
    Nouveau membre du Club
    FMX Comment savoir si une permission (Android) a déjà été accordée ?
    Bonjour a tous
    J'ai besoin sous Delphi 10.4 de connaitre si une permission Android a déjà été accordée ?
    J'ai trouvé ce code sur un forum mais j'ai des messages d'erreurs que je n'arrive pas a corriger
    Si quelqu'un a une idée ce serait top
    Merci merci

    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
    39
    40
    41
     
    unit Unit1;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      Androidapi.JNI.JavaTypes,
      Androidapi.JNI.Os,
      Androidapi.Jni.Support,
      Androidapi.Helpers, FMX.Controls.Presentation, FMX.StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.fmx}
    {$R *.LgXhdpiPh.fmx ANDROID}
    {$R *.LgXhdpiTb.fmx ANDROID}
    {$R *.NmXhdpiPh.fmx ANDROID}
    {$R *.SmXhdpiPh.fmx ANDROID}
    {$R *.XLgXhdpiTb.fmx ANDROID}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       if (TJContextCompat.JavaClass.checkSelfPermission(
           TAndroidHelper.Activity, TJManifest_permission.JavaClass.ACCESS_FINE_LOCATION) =
          TJPackageManager.JavaClass.PERMISSION_GRANTED)
          then Showmessage('Permission Fine Location deja accordée')
          else Showmessage('Permission Fine Location non accordée');
    end;
     
    end.


    J'ai les erreurs suivantes

    E2003 Identificateur non déclaré : TJPackageManager a la ligne 35
    E2029 ')' attendue mais Identificateur JavaClass trouvé a la ligne 35
    E2029 ';' attendu mais fin de fichier trouvé à la ligne 41

    Comment et ou déclarer le TJPackageManager ?

  2. #2
    Modérateur

    Bonjour,

    Dans un code 10.3 trouvé sur cette page, les uses référencent :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
      Androidapi.JniBridge,
      Androidapi.Jni,
      Androidapi.Jni.Os,
      Androidapi.Helpers,
      ...

    Il semble t'en manquer, mais je ne sais pas s'ils sont nécessaires...
    Delphi 5 Pro - Delphi 10.3.2 Rio Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Nouveau membre du Club
    Citation Envoyé par tourlourou Voir le message
    Bonjour,

    Dans un code 10.3 trouvé sur cette page, les uses référencent :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
      Androidapi.JniBridge,
      Androidapi.Jni,
      Androidapi.Jni.Os,
      Androidapi.Helpers,
      ...

    Il semble t'en manquer, mais je ne sais pas s'ils sont nécessaires...
    Merci à toi mais malheureusement rajouter ces uses n'a pas réglé le prob mais je vais aller voir ton article

  4. #4
    Membre expérimenté
    Citation Envoyé par pierrejean75 Voir le message
    Bonjour a tous
    J'ai besoin sous Delphi 10.4 de connaitre si une permission Android a déjà été accordée ?
    J'ai trouvé ce code sur un forum mais j'ai des messages d'erreurs que je n'arrive pas a corriger
    ouch, c'est pas du récent ça

    tout est dans l'unité System.Permissions

    tu peux utiliser les exemples fournis avec Delphi pour copier coller le code qui t'intéresse en fonction des permissions utiles.

  5. #5
    Nouveau membre du Club
    Citation Envoyé par pprem Voir le message
    ouch, c'est pas du récent ça

    tout est dans l'unité System.Permissions

    tu peux utiliser les exemples fournis avec Delphi pour copier coller le code qui t'intéresse en fonction des permissions utiles.
    Merci mais ce n'est pas ma question, je sais demander les permissions, la ce dont j'ai besoin c'est de pouvoir tester si une permission a déjà été accordée ou non
    Car pour contourner le beug sur l'autorisation de localisation... (l'autorisation ne s'active que quelques secondes apres avoir été accordée)....je mets un timer de 3 secondes
    Ce que je voudrais c est pouvoir faire que ce Timer ne se declenche que si l'autorisation n'a pas encore été accordée

    Donc j'ai besoin de savoir si l'autorisation a deja été accordée par l'utilisateur lors d'un lancement précédent du programme ou si elle vient d etre accordée par l'utilisateur

  6. #6
    Membre expérimenté
    Citation Envoyé par pierrejean75 Voir le message
    Merci mais ce n'est pas ma question, je sais demander les permissions, la ce dont j'ai besoin c'est de pouvoir tester si une permission a déjà été accordée ou non
    Car pour contourner le beug sur l'autorisation de localisation... (l'autorisation ne s'active que quelques secondes apres avoir été accordée)....je mets un timer de 3 secondes
    Ce que je voudrais c est pouvoir faire que ce Timer ne se declenche que si l'autorisation n'a pas encore été accordée

    Donc j'ai besoin de savoir si l'autorisation a deja été accordée par l'utilisateur lors d'un lancement précédent du programme ou si elle vient d etre accordée par l'utilisateur
    de la même manière qu'on fait un appel pour demander les permissions, on peut les interroger avec IsPermissionGranted()

  7. #7
    Membre expérimenté
    Et pendant que je parle de permissions, ne vous embêtez pas à tester si vous êtes sur Android ou pas, System.Permission donne les droits par défaut si vous n'êtes pas sur Android, donc inutile de s'embêter à faire du code pour Android séparé du code pour iOS/macOS/Windows/Linux. Celui d'Android fonctionne partout. Le conditionnement par compilateur proposé dans les exemples et sur des sources qu'on trouve sur le net n'est pas une obligation.

  8. #8
    Nouveau membre du Club
    Citation Envoyé par pprem Voir le message
    de la même manière qu'on fait un appel pour demander les permissions, on peut les interroger avec IsPermissionGranted()
    Merci pour ton aide

###raw>template_hook.ano_emploi###