Ne peut pas créer des Fichiers Externes Dir en Android. WRITE_EXTERNAL_STORAGE est présent

J'ai essayé d'utiliser mon ApplicationContext et mon appel Service's Context pour accéder au répertoire externe. Malheureusement, il conserve son retour null, et LogCat rapports, il était impossible de créer le répertoire externe. Je suis sûr que j'ai le WRITE_STORAGE_PERMISSION présent, mais cela ne fonctionne toujours pas. Mon appareil est en cours d'exécution de l'API 10 (2.3.3) de vanille android. Des idées?

Voici mon manifeste:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="droid.signboard" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" />


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



<application android:icon="@drawable/icon" android:label="@string/app_name"
    android:name="SignboardApp">
    <receiver android:name=".ApplicationStarter">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"></action>
            <action android:name="droid.signboard.LAUNCHER_START"></action>
        </intent-filter>
    </receiver>
    <activity android:label="@string/app_name"
        android:screenOrientation="landscape" android:launchMode="singleTop"
        android:name=".view.Signboard">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"></action>
            <category android:name="android.intent.category.LAUNCHER"></category>
        </intent-filter>
    </activity>
    <service android:name=".controller.MasterControllerService">
        <intent-filter>
            <action
                android:name="droid.signboard.LAUNCH_SERVICE_FROM_ACTIVITY"></action>
        </intent-filter>
    </service>


</application>
</manifest>

et c'est là que le code des mess:

private boolean canWriteEx () {

    String state = Environment.getExternalStorageState ();

    if (state.equals (Environment.MEDIA_MOUNTED)) {
        Log.i (TAG, "Can write to external directory: "
                + context.getExternalFilesDir (null).getAbsolutePath ());
        return true;
    } else {
        Log.i (TAG, "Cannot write to external directory: "
                + context.getExternalFilesDir (null).getAbsolutePath ());
        return false;
    }
}

Le code est une méthode d'un Runnable, qui est appelé par un Service. Le constructeur de la Runnable prend un Context comme paramètre. C'est le Context utilisé par le code. Le code génère une exception dans le Journal d'appel qui réussit, ce qui implique que le stockage externe est présent et disponible.

MISES À JOUR DE LA TENTATIVE DE CORRECTIFS:

Une nouvelle installation ne fonctionne pas.

Revenant vers le bas à l'API 9 ne fonctionne pas, si elle a fonctionné auparavant.

Votre Post androidmanifest.xml fichier.
Poster votre code, et les traces de pile. sans elle, tout ce que nous pouvons faire est de deviner coups de feu dans l'obscurité.
Qu'essayez-vous de faire? Pourquoi êtes-vous en appelant le contexte.getExternalFilesDir (null)? Dites-nous le but et nous pourrions le but de mieux vous. Aussi, la trace de la pile de votre logcat serait utile.
Je suis en train de télécharger un fichier sur le net, dans mon périphérique de stockage externe dir. Ce sera exécutée par un service, et doivent s'exécuter de manière asynchrone de tout le reste de l'application. Pour ce faire, je suppose que j'ai besoin d'une connexion et d'accès de stockage externe. J'ai passé un Context à la Runnable qui prépare le DownloadManager.Request faire ces. Je vérifie de stockage externe en premier, mais il échoue ici, même si Environment.getStorageState () œuvres.
J'ai été voir ce problème ainsi, sur 2.3.3 et 4.0. Semble que l'appareil est dans un état où il continuera de retourner la valeur null (ou peut-être la chaîne vide), et seulement un hard reset va le corriger. Le fait qu'il fonctionne la plupart du temps me fait penser à mon code/manifeste sont OK.

OriginalL'auteur cesar | 2011-09-28