La création d'un répertoire dans /sdcard échoue
J'ai essayé de créer un répertoire dans /sdcard
de la programmation, mais ça ne fonctionne pas. Le code ci-dessous toujours sorties directory not created.
boolean success = (new File("/sdcard/map")).mkdir();
if (!success) {
Log.i("directory not created", "directory not created");
} else {
Log.i("directory created", "directory created");
}
Vous devez vous connecter pour publier un commentaire.
Il y a trois choses à considérer ici:
Ne présumez pas que la carte sd est montée à
/sdcard
(Peut-être vrai dans le cas par défaut, mais mieux vaut ne pas coder en dur.). Vous pouvez obtenir l'emplacement de la carte sd en interrogeant le système d':Vous informer Android dont votre application a besoin d'écrire de stockage externe en ajoutant un utilise-l'autorisation d'entrée dans le AndroidManifest.xml fichier:
Si ce répertoire existe déjà, puis mkdir va retourner false. Donc, vérifiez l'existence du répertoire, puis essayer de la créer si elle n'existe pas.
Dans votre composant, utilisez quelque chose comme:
J'ai eu le même problème après j'ai mis à jour mon téléphone Android à la version 6.0 (API level 23). La solution suivante fonctionne sur moi. J'espère qu'il vous aide ainsi.
Veuillez vérifier votre version d'android. Si c'est >= 6.0 (API level 23), vous devez non seulement inclure
dans votre AndroidManifest.xml mais aussi demander la permission avant d'appeler mkdir().
Code snopshot.
Plus d'informations, veuillez lire "Demander des Autorisations au Moment de l'Exécution"
Le chemin d'accès à la carte sd est
mais, comme répondu avant, vous ne devriez pas coder en dur. Si vous êtes sur Android 2.1 ou après, utiliser
Autrement:
Lire attentivement https://developer.android.com/guide/topics/data/data-storage.html#filesExternal
Aussi, vous aurez besoin d'utiliser cette méthode ou quelque chose de similaire
ensuite, vérifiez si vous pouvez accéder à la carte sd. Comme l'a dit, de lire la documentation officielle.
Une autre option, peut-être vous avez besoin d'utiliser mkdirs au lieu de mkdir
Crée le répertoire nommé par la fuite de nom de fichier de ce fichier, y compris le chemin d'accès complet du répertoire pour la création de ce répertoire.
getExternalFilesDir()
surEnvironment
dans n'importe quelle version d'Android. Vous pensez peut-être degetExternalFilesDir()
surContext
, qui a été ajouté à la section 2.2. Cependant, cette méthode est un peu cassé -- le répertoire, il donne vous aurez son contenu supprimé lors d'une application de mise à niveau. J'espère que ce sera corrigé dans le pain d'épices.Redémarrer votre appareil Android. Les choses ont commencé à travailler pour moi, après j'ai redémarré l'appareil.
Si cela vous arrive avec Android 6 et cible de compilation >= 23, n'oubliez pas que nous sommes maintenant à l'aide de d'exécution des autorisations d'. Afin de donner des autorisations dans le manifeste ne suffit plus.
utilisation mkdirs() au lieu de mkdir()..cela a fonctionné pour moi 🙂
dans l'api android >= 23
au lieu de
Avez-vous le droit des autorisations d'écriture sur la carte SD dans votre manifeste ?
Recherchez WRITE_EXTERNAL_STORAGE à http://developer.android.com/reference/android/Manifest.permission.html
N'est-il pas déjà créé ? Mkdir retourne false si le dossier existe déjà trop
mkdir
Il y a Beaucoup de Choses que Vous Devez à vous soucier de
1.Si vous utilisez Android Soufflet de Guimauve ensuite, vous devez définir permesions dans le Fichier de Manifeste.
2. Si vous utilisez la Version ultérieure d'Android moyens de Guimauve pour Oreo maintenant
Soit vous devez aller les informations sur l'Application et d'y placer manuellement Application l'autorisation pour le Stockage.
si vous voulez en faire au Moment de l'Exécution, vous pouvez le faire par code ci-dessous
}
J'ai fait l'erreur d'inclure à la fois:
et:
dans l'ordre ci-dessus. Alors, quand j'ai pris la deuxième autorisation, (LIRE), le problème a disparu.