2011-08-04 34 views
6

he establecido el siguiente mi manifiesto de Android:sd.canWrite() devuelve siempre falsas

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Tengo el siguiente en mi actividad:

File sd = Environment.getExternalStorageDirectory(); 
boolean can_write = sd.canWrite(); 

vuelve sd/mnt/sdcard

Estoy probando en mi dispositivo (evo 3d) no el emulador. La tarjeta SD está montada. Ocurre tanto en el modo solo carga como cuando el cable usb no está enchufado. Varias páginas en google y publicaciones en la pila muestran exactamente el mismo método para verificar si la tarjeta SD es escribible, así que me falta algo.

ACTUALIZACIÓN:

trato el siguiente código y que arroja el permiso IOException negó.

File TestFile = new File(sd + "/testfile.txt"); 
    try { 
     boolean result = TestFile.createNewFile(); 
     if(result) 
     { 
      Log.i("tag","successfully created file"); 
     } else { 
      Log.i("tag","failed to create file"); 
     } 
    } catch (IOException e) { 
     Log.e("tag",e.toString() + " " + TestFile); 
     return false; 
    } 

he formateado la tarjeta sd, volver a montar, y reiniciado el teléfono y todavía tienen el mismo error.

ACTUALIZACIÓN

Al parecer es mi propia ignorancia que causó el error. Tenía mi bloque de permisos en la sección incorrecta de mi manifiesto. Gracias de nuevo :)

+0

por lo general se queja si algo está en el lugar equivocado. ¿Dónde estabas poniendo los permisos? –

+0

¿Dónde poner los uses-persmission? Gracias de antemano. – twlkyao

Respuesta

13

yo no usaría sd.canWrite(), en realidad, me gustaría utilizar algo como esto:

String state = Environment.getExternalStorageState(); 
if (Environment.MEDIA_MOUNTED.equals(state)) { 
    Log.d("Test", "sdcard mounted and writable"); 
} 
else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { 
    Log.d("Test", "sdcard mounted readonly"); 
} 
else { 
    Log.d("Test", "sdcard state: " + state); 
} 

Tomado de: http: //www.xinotes.org/notes/nota método/1270/

+1

Eres increíble. gracias :) ¿Alguna explicación de por qué el método .canWrite() no funciona como se esperaba? – matt

0

CanWrite() muestra falsa de directorios por defecto es según mi observación no saben la razón detrás de ella

Cuestiones relacionadas