Intenté usar mi ApplicationContext
y mi llamada Service
's Context
para acceder al directorio externo. Desafortunadamente, sigue respondiendo null
, y LogCat informa que no pudo crear el directorio externo. Estoy seguro de que tengo el WRITE_STORAGE_PERMISSION
presente, pero todavía no funcionará. Mi dispositivo está ejecutando API 10 (2.3.3) vanilla android. ¿Algunas ideas?No se puede crear archivos externos Dir en Android. WRITE_EXTERNAL_STORAGE está presente
Aquí es mi manifiesto:
<?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>
y aquí es donde el código meta la pata:
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;
}
}
El código es un método de una Runnable
, que es llamado por un Service
. El constructor del Runnable
toma un Context
como su parámetro. Esa es la Context
utilizada por el código. El código arroja una excepción en la llamada de Registro que sucede a, lo que implica que el almacenamiento externo está presente y disponible.
ACTUALIZACIONES DE CORRECCIÓN DE INTENTOS:
una instalación limpia no funciona.
Revertir a API 9 no funciona, aunque funcionó antes.
Publique su archivo androidmanifest.xml. – Otra
Publica tu código y cualquier rastro de pila relevante. sin eso, todo lo que podemos hacer es adivinar tiros en la oscuridad. – FoamyGuy
¿Qué estás tratando de hacer? ¿Por qué llamas a context.getExternalFilesDir (null)? Cuéntanos el propósito y podemos apuntar mejor. Además, el seguimiento de la pila de tu logcat sería útil. – IncrediApp