Ho provato ad utilizzare sia il mio ApplicationContext
sia il mio numero di telefono Service
per accedere alla directory esterna. Context
Sfortunatamente, continua a restituire null
e LogCat segnala che non è stato in grado di creare la directory esterna. Sono sicuro di avere il WRITE_STORAGE_PERMISSION
presente, ma ancora non funzionerà. Il mio dispositivo sta eseguendo l'API 10 (2.3.3) vanilla Android. Qualche idea?Impossibile creare file esterni Dir in Android. WRITE_EXTERNAL_STORAGE è presente
Ecco il mio manifesto:
<?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>
e qui è dove il codice scombina:
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;
}
}
Il codice è un metodo di un Runnable
, che si chiama da un Service
. Il costruttore di Runnable
prende come parametro un Context
. Questo è il Context
utilizzato dal codice. Il codice genera un'eccezione nella chiamata di registro che supera, implicando che lo spazio esterno è presente e disponibile.
AGGIORNAMENTI di correzioni tentato:
una installazione pulita non funziona.
Il riavvio all'API 9 non funziona, sebbene abbia funzionato prima.
Pubblica il tuo file androidmanifest.xml. – Otra
Pubblica il tuo codice e qualsiasi traccia dello stack pertinente. senza di essa tutto ciò che possiamo fare è indovinare i colpi nell'oscurità. – FoamyGuy
Cosa stai cercando di fare? Perché stai chiamando context.getExternalFilesDir (null)? Diteci lo scopo e potremmo mirarvi meglio. Inoltre, lo stack trace dal tuo logcat sarebbe utile. – IncrediApp