0

Chaque fois que j'essaie de lire les informations de carte SD (mémoire amovible), je reçois android.system.ErrnoException: statvfs a échoué: EACCES (Autorisation refusée)lecture/écriture Carte SD amovible (émulateur Android)

I ajoutée autorisations dans le fichier manifeste:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Comme minSdkVersion> 23

public static void verifyStoragePermissions(Activity activity) { 
    // Check if we have write permission 
    int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); 

    if (permission != PackageManager.PERMISSION_GRANTED) { 
     // We don't have permission so prompt the user 
     ActivityCompat.requestPermissions(
       activity, 
       PERMISSIONS_STORAGE, 
       REQUEST_EXTERNAL_STORAGE 
     ); 
    } 
} 

la méthode est appelée ci-dessus lorsque l'activité est de créer (il montre la fenêtre et j'autoriser l'accès)

Mais quand j'essaie d'accéder au périphérique: (Path =/mnt/media_rw/13F4-1C18)

StatFs stat = new StatFs(path); 

Je suis cette erreur:

java.lang.IllegalArgumentException: Invalid path: /mnt/media_rw/13F4-1C18 
                  at android.os.StatFs.doStat(StatFs.java:46) 
                  at android.os.StatFs.<init>(StatFs.java:39) 
..... 
Caused by: android.system.ErrnoException: statvfs failed: EACCES (Permission denied) 
                  at libcore.io.Posix.statvfs(Native Method) 
                  at libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:304) 
                  at android.system.Os.statvfs(Os.java:506) 
                  at android.os.StatFs.doStat(StatFs.java:44) 
                  at android.os.StatFs.<init>(StatFs.java:39)  

Avez-vous une idée s'il vous plaît comment autoriser l'accès à un APPAREIL AMOVIBLE?

Merci!

+0

Quel type d'information voulez-vous lire? Et cela ne ressemble pas à un chemin vers la carte SD. – greenapps

+0

Taille de l'appareil (total, taille disponible) – Mohamed

+0

Et que voulez-vous écrire? – greenapps

Répondre

2

carte SD (mémoire externe)

Removable storage n'est pas external storage.

I ajouté autorisations dans le fichier manifeste

Ces autorisations ont rien à voir avec le stockage amovible.

je suis arrivé cette erreur

Vous n'avez pas accès au système de fichiers directement à des emplacements arbitraires sur le stockage amovible.

Avez-vous une idée s'il vous plaît comment autoriser l'accès à la carte SD externe?

Soit:

  • Sur Android 4.4+, utilisez getExternalFilesDirs(), getExternalCacheDirs(), et/ou getExternalMediaDirs() (notez le pluriel des noms de méthode) sur Android 4.4+, pour accéder à des répertoires uniques pour votre application sur le stockage amovible. Vous n'avez besoin d'aucune autorisation pour travailler avec ces répertoires.

  • Sur Android 4.4+, arrêtez de penser en termes de stockage amovible et utilisez the Storage Access Framework. Cela permet à l'utilisateur de spécifier où le contenu réside, qui peut être sur le stockage externe, le stockage amovible, Google Drive, etc.

  • Sur Android 7.0+, utilisez StorageManager et ses API StorageVolume.