2011-08-04 69 views
6

tôi đã thiết lập sau manifest android của tôi:sd.canWrite() luôn trả về false

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

Tôi đã có những điều sau đây trong hoạt động của tôi:

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

lợi nhuận sd/mnt/sdcard

Tôi đang thử nghiệm trên thiết bị của mình (evo 3d) không phải trình giả lập. Thẻ sd được lắp. Nó xảy ra cả khi chế độ chỉ sạc và khi cáp USB không được cắm vào. Các trang khác nhau trên google và các bài đăng trên ngăn xếp cho thấy chính xác phương pháp tương tự để kiểm tra xem thẻ sd có ghi được không, vì vậy tôi phải thiếu thứ gì đó.

UPDATE:

tôi cố gắng đoạn mã sau và nó ném phép IOException từ chối.

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

Tôi đã định dạng thẻ SD, gắn lại thẻ và khởi động lại điện thoại nhưng vẫn gặp lỗi tương tự.

CẬP NHẬT

Rõ ràng đó là sự thiếu hiểu biết của riêng tôi mà gây ra lỗi đối với nó. Tôi đã chặn quyền trong phần sai của tệp kê khai của mình. Cảm ơn một lần nữa :)

+0

Thông thường nó phàn nàn nếu có điều gì là sai chỗ. Bạn đã đặt quyền ở đâu? –

+0

Nơi để đưa việc sử dụng-persmission? Cảm ơn bạn trước. – twlkyao

Trả lời

13

tôi sẽ không sử dụng sd.canWrite(), trên thực tế, tôi sẽ sử dụng một cái gì đó như thế này:

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 từ đây: http: //www.xinotes.org/notes/note 1270

+1

Bạn thật tuyệt vời. cảm ơn :) Bất kỳ lời giải thích là tại sao phương thức .canWrite() không hoạt động như mong đợi? – matt

0

canWrite() phương pháp// cho thấy sai cho các thư mục mặc định này là theo quan sát của tôi không biết lý do đằng sau nó

Các vấn đề liên quan