2011-08-04 35 views
6

aşağıdaki benim android bildirim belirledik:sd.canWrite() her zaman döndürür false

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

benim aktivitesinde aşağıdaki var:

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

sd döner/mnt/sdcard

Cihazımdan (evo 3d) değil emülatör üzerinde test ediyorum

. SD kartı monte edilmiştir. Olur hem usb kablosu takılı değilken. Sd kart yüzden bir şey eksik gerekir yazılabilir ise sorumlu tek modu ve aynı yöntemi kesin yığın gösteri Çeşitli google sayfaları ve mesajlar kontrol etmek zaman.

GÜNCELLEME:

Aşağıdaki kodu deneyin ve IOException izni reddedildi atar.

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; 
    } 

benim Sdcard'ı biçimlendirilmiş ettik yeniden monte ve telefonu yeniden ve hala aynı hata var.

GÜNCELLEME

Anlaşılan o başarısız olmasına neden kendi cehalet. Bildirimlerimin yanlış bölümünde izinlerim engellendi. Tekrar teşekkürler :)

+0

Genellikle şikayet arkasında nedenini bilmiyorum benim gözlem başına gibidir varsayılan dizinler için sahte gösterir unutmayın. İzinleri nereye koyuyordun? –

+0

nerede kullanır-persmission koymak? Şimdiden teşekkür ederim. – twlkyao

cevap

13

Ben, aslında böyle bir şey kullanmak istiyorsunuz sd.canWrite() kullanmak ister: Buradan

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); 
} 

Taken http: //www.xinotes.org/notes// 1270/

+1

Harikasınız. teşekkürler :) beklendiği gibi .canWrite() yöntemi çalışmıyor neden olarak herhangi bir açıklama mı? – matt

0

CanWrite() metodu bu şey yanlış yerdeyse bunun

İlgili konular