French writte/Read file permission

Discussion in 'French Forum' started by Fillmore, Jun 4, 2018.

  1. Fillmore

    Fillmore Member Licensed User

    Bonjour à tous,

    Je galère avec les permissions de lecture/écriture de fichiers (target 26).
    J'ai parcouru les forums, mais je n'y arrive pas.

    Quelqu'un peut m'aider ?

    Merci !

    FM
     
  2. klaus

    klaus Expert Licensed User

  3. Fillmore

    Fillmore Member Licensed User

    Bonjour Klaus,

    J'ai lu et essayé, mais je n'y arrive pas. J'ai réussi à autoriser la cam pour flasher les qrcodes. Mais la lecture écriture, non.

    Je ne sais pas ce que je dois rajouter en terme de code.

    Je vais potasser, mais cette histoire me met bien dans le jus...

    Merci pour ta réponse en tout cas.

    FM
     
  4. klaus

    klaus Expert Licensed User

    Qu'est-ce qui ne fonctionne pas ?
    Quel code utilises-tu ?
    Est-ce que tu obtiens des messages d'erreur ?
    Où veux tu enregistrer ?
    Que veux-tu faire avec les fichiers ?
     
  5. Fillmore

    Fillmore Member Licensed User

    Qu'est-ce qui ne fonctionne pas ? Lorsque je veux lire ou enregistrer, l'appli se ferme. Le deboger m'indique "PERMISION DENIED"
    Quel code utilises-tu ? c'est là le problème je ne sait pas ce qu'il faut que j'insère et où. J'ai modifié le manifest, mais je ne comprends pas bien :" Use RuntimePermissions.GetSafeDirDefaultExternal("") instead of File.DirDefaultExternal. The parameter passed is an optional subfolder that will be created under the default folder."
    Est-ce que tu obtiens des messages d'erreur ? A part dans le deboger, non.
    Où veux tu enregistrer ? tabsvg.SaveTableToCSV(File.DirRootExternal,"/qrco/Courses/temp.csv")
    Que veux-tu faire avec les fichiers ? sauvegarder les données d'une course d'orientation et pouvoir les relire ensuite.

    J'espère avoir répondu comme il faut.

    Merci bien !

    FM
     
  6. klaus

    klaus Expert Licensed User

    Si tu veux relire les fichiers qu'avec ton application tu peux utiliser File.DirInternal, ce dossier n'est accessible par aucune autre application.
    Si tu supprimes le programme ce dossier est aussi supprimé.
    Si tu veux que les fichiers soient accessibles par d'autres applications, tu peux utiliser RuntimePermissions.GetSafeDirDefaultExternal("") sans autre permission.
    J'ai joint un petit programme test, qui écrit et relir des données.
    Ce fichier est accessible avec l'explorateur de fichier de WIndoes sur le PC avec l'appareil connecté avec un câble USB, sous Phone\Android\data\b4a.FileFolderTest\files.
    upload_2018-6-4_16-27-59.png

    J'ai essayé d'y accéder par un autre programme depuis l'appareil en utilisant le nom de dossier donné par RuntimePermissions.GetSafeDirDefaultExternal("").
    "/storage/emulated/0/Android/data/b4a.FileFolderTest/files" dans mon cas, et ça fonctionne.
    b4a.FileFolderTest étant le nom de l'application entrée dans Build Configuration.
    upload_2018-6-4_16-31-50.png
     

    Attached Files:

  7. Fillmore

    Fillmore Member Licensed User

    Super, merci.

    J'ai en effet besoin d'accéder au répertoire en cas d'export des resultats.
    Je regarde tout ça ce soir.

    Encore merci.

    FM
     
  8. Fillmore

    Fillmore Member Licensed User

    Bonjour Klaus,

    En cherchant un peu, j'ai trouvé cette solution : https://www.b4x.com/android/forum/threads/denied-permission-sdk-23.69226/#post-439306

    L'exemple que j'ai chargé fonctionne parfaitement.

    J'ai essayé de l'intégrer à mon code, mais impossible d'intégrer la Sub Activity_PermissionResult (Permission As String, Result As Boolean)

    Elle n'est pas reconnue comme une routine... Alors que si je l'intègre à un projet vierge, ça ne pose aucun problème.

    Je préférerais écrire à la racine du stockage pour que les utilisateurs puissent retrouver les fichiers créés plus facilement. Sinon, je ferai comme tu m'a dit au moins pour l'instant.

    je mets la partie incriminée, mais pas certain que ça aide beaucoup...
    J'ai essayé de l'insérer à plusieurs endroits, mais rien n'y fait. Je dois faire quelque chose de travers...

    Mais bon, à moins que la solution ne te saute aux yeux, ne t’embête pas trop avec ça.

    Merci et bonne journée.

    FM


    Code:
    Private Sub SetTheme (Theme As Int)
        
    If Theme = 0 Then
            
    ToastMessageShow("Theme not available."False)
            
    Return
        
    End If
        
    If Theme = Theme_Value Then Return
        Theme_Value = Theme
        
    Activity.Finish
        
    StartActivity(Me)
    End Sub

    Sub Activity_PermissionResult (Permission As String, Result As Boolean)

      
    If Permission = rp.PERMISSION_WRITE_EXTERNAL_STORAGE Then
            sdcardEnabled = 
    False
            
    Log("You NOW can write to File.DirRootExternal")       
             
    File.WriteString(File.DirRootExternal, "/QRCO/String.txt", _
            
    "This is some string" & CRLF & "and this is another one.")
      
    End If

    end sub
     
  9. klaus

    klaus Expert Licensed User

    Ci-joint le project avec la 'runtime permission'.
    As-tu ajouté le code ci-dessous dans le Manifest Editor?
    Code:
    <uses-permission
    android:name=
    "android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion=
    "18" />)
    Ainsi que rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE)dans Activity_Create?
     
  10. Fillmore

    Fillmore Member Licensed User

    J'ai trouvé...

    La sub existait déjà pour le GPS...
    Alors, j'ai honte...

    Merci encore pour ton aide !

    Fred
     
  11. Fillmore

    Fillmore Member Licensed User

    Par contre le play store me dit ça :

    Déclarations d'autorisation android.permission.WRITE_EXTERNAL_STORAGE en double avec des paramètres maxSdkVersions différents.

    Ca vient surement de ce que j'ai ajouté au manifest...

    Je peux l'enlever ?

    Merci.

    Fred
     
  12. klaus

    klaus Expert Licensed User

    Ça dépend de ce que tu as dans le Manifest Éditor.
    Il semble qu’il y ait un problème avec les maxSdkVersions.
     
  13. Fillmore

    Fillmore Member Licensed User

    J'ai ça :


    Code:
    'AddManifestText(
    '<uses-permission
    '  android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    '  android:maxSdkVersion="18" />
    ')

    AddManifestText(
    <uses-sdk android:minSdkVersion=
    "4" android:targetSdkVersion="26"/>
    <supports-screens android:largeScreens=
    "true"
        android:normalScreens=
    "true"
        android:smallScreens=
    "true"
        android:anyDensity=
    "true"/>)
    AddManifestText(<uses-feature android:name=
    "android.hardware.telephony" android:required="false" />)
    AddManifestText(<uses-feature android:name=
    "android.hardware.camera" android:required="false" />)
    AddManifestText(<uses-feature android:name=
    "android.hardware.camera.autofocus" android:required="false" />)
    AddManifestText(<uses-feature android:name=
    "android.hardware.camera.flash" android:required="false" />)
    'AddPermission("android.permission.ACCESS_COARSE_LOCATION")
    AddPermission("android.permission.INTERNET")
    AddPermission(
    "android.permission.ACCESS_FINE_LOCATION")
    AddPermission(
    "android.permission.WAKE_LOCK")
    AddPermission(
    "android.permission.DEVICE_POWER")
    'AddPermission("android.permission.ACCESS_COARSE_UPDATES")
    AddPermission("android.permission.READ_PHONE_STATE")
    AddPermission(
    "android.permission.VIBRATE")
    AddPermission(
    "android.permission.CAMERA")
    AddPermission(
    "android.permission.FLASHLIGHT")
    AddPermission(
    "android.hardware.camera")
    SetApplicationAttribute(android:icon, 
    "@drawable/icon")
    SetApplicationAttribute(android:
    label"$LABEL$")
     
  14. klaus

    klaus Expert Licensed User

    'AddManifestText(
    '<uses-permission
    ' android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    ' android:maxSdkVersion="18" />
    ')
    est commenté, as tu essayé avec ce code non commenté?
     
  15. Fillmore

    Fillmore Member Licensed User

    Oui, bien sur.
    Je l'ai commenté pour pouvoir déployer ma version (car urgence), ce qui a fonctionné (l'appli fonctionne aussi très bien).
    Mais qu'est-ce que je risque à ne pas le mettre ?

    Merci.

    Fred
     
  16. klaus

    klaus Expert Licensed User

    Je ne sais pas pas.
    Mais si ça fonctionne, tant mieux.
     
    Fillmore likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice