getExternalFilesDir(null) retourne null

Encore une fois, je suis venu à l'encontre d'une question qui a été demandé et répondu avant, mais dans mon application, il ne fonctionne toujours pas.

Je vais appeler getExternalFilesDir(null) droit au tout début de mon activité principale est onCreate méthode. Elle renvoie la valeur null à chaque fois, que je le lance dans un AVD ou sur mon téléphone (Samsung Galaxy Plus).

Oui, j'ai le <uses-permission android:name="android.permissions.WRITE_EXTERNAL_STORAGE" /> ligne dans mon AndroidManifest.xml et oui, je suis la vérification de l'appareil de stockage externe de l'état avant de me faire l'appel et qu'il est monté.

Voici les trois premières lignes à l'intérieur de mon onCreate() méthode. En fait, c'est juste après l' super.onCreate() et setContentView() appels.

String state = Environment.getExternalStorageState();
File extFiles = getExternalFilesDir(null);
File locFiles = getFilesDir();

Donc, une fois que ces trois lignes ont été exécutées, ce sont des valeurs pour les variables:

state == "mounted"
extFiles == null
locFiles == "/data/data/com.mypackage.name/files"

Quelqu'un aurait-il une idée de quoi cela peut-il être?

-----EDIT-----

J'ai donc essayé une autre approche; Plutôt que d'utiliser getExternalFilesDir(null), j'ai essayé d'utiliser File basePath = new File(Environment.getExternalStorageDirectory(), "myAppName");

Ce n'est pas l'idéal et je sais que l'Android documentation dit, et je suis d'accord avec elle, que vous devriez plutôt utiliser getExternalFilesDir(). Voyant que cela ne fonctionne pas pour moi, même si j'ai eu à essayer quelque chose d'autre. Cette fois, la fonction renvoie un objet de Fichier valide donc, après la ligne ci-dessus, le chemin de basePath est /mnt/sdcard/myAppName. Pour l'instant, donc bon. Lorsque je vérifie avec DDMS je peux voir que /mnt/sdcard existe, mais pas /mnt/sdcard/myAppName. Ce n'est à prévoir. J'appelle donc boolean result = basePath.mkdirs();

Mais ceci renvoie false et quand je vérifie sur le système de fichiers, je peux confirmer que le myAppName sous-dossier n'a pas été créé. Quand j'ai créer le dossier manuellement par l'intermédiaire de DDMS et de mettre des fichiers, je peux lire ces fichiers à partir de mon application, mais je ne peut rien écrire dans ce dossier.

S'il vous plaît aider! Je suis à mon wit's end.

  • avez-vous essayé avec un type spécifique, comme MUSIC ?
  • Oui, je l'ai essayé et il renvoie également null.
  • 1) Nettoyer/créer un projet dans Eclipse. 2) Plein de désinstallation/réinstallation de l'application. La même chose se produire?
  • OK, j'ai juste essayé et ça n'aide pas non plus. J'ai découvert une autre chose étrange qui pourraient être liées. Je vais modifier la question d'origine pour en tenir compte.