ContextCompat.getExternalFilesDirs(context, null) dit:Pourquoi certains ContextCompat.getExternalFilesDirs ne sont-ils pas accessibles?
retours chemins absolus vers des répertoires spécifiques à l'application sur tous les périphériques de stockage externes où l'application peut placer des fichiers persistants dont il est propriétaire.
Par exemple, un Huawei Honor exécutant Android 5.1.1 renvoie les éléments suivants de cette méthode:
/storage/emulated/0/Android/data/my.package.name/files
/storage/sdcard1/Android/data/my.package.name/files
Le deuxième répertoire est une carte SD amovible. Toutefois, si j'essaie de lire ou d'écrire dans ce répertoire, j'obtiens une exception: android.system.ErrnoException: open failed: EACCES (Permission denied)
L'application dispose de WRITE_EXTERNAL_STORAGE
. Et cela fonctionne très bien sur un Samsung Galaxy Note 4 fonctionnant sous Android 4.4.4. Ceci n'est pas lié aux autorisations optionnelles d'Android 6.0, car il s'agit d'un problème sur 5.1.1.
L'API dit the application can place persistent files it owns
mais cela ne semble pas être le cas.
J'ai également entendu parler d'autres appareils, y compris des appareils Samsung plus modernes. Est-ce que seuls les OEM ne l'implémentent pas correctement ou y a-t-il quelque chose qui me manque dans les frameworks de stockage complexes d'Android?
Voici un code qui va le démontrer sur ceci et sur certains appareils. Toute tentative de création, de déplacement ou de déplacement de fichiers mkdir dans ce répertoire échoue.
« si je tente de lire ou d'écrire dans ce répertoire » - quel répertoire? Vous en indiquez deux. "L'application a WRITE_EXTERNAL_STORAGE" - ce qui n'est pas pertinent pour ces emplacements sur Android 4.4+. – CommonsWare
Oups. Mis à jour ci-dessus Le second, qui est une carte SD amovible. – cottonBallPaws
Eh bien, vous devriez avoir un accès en lecture/écriture à cela. Vous pouvez envisager d'envoyer le code qui échoue, ainsi qu'une trace de pile complète. À mon humble avis, il est plus probable qu'un fabricant bousiller le stockage amovible un que le stockage externe. – CommonsWare