java – sd.canWrite()总是返回false

前端之家收集整理的这篇文章主要介绍了java – sd.canWrite()总是返回false前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经设置了以下我的 Android清单:
  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我的活动中有以下内容

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

sd返回/ mnt / sdcard

我在我的设备上测试(evo 3d)而不是模拟器. SD卡已安装.它只在充电模式和没有插入usb电缆时发生.Google上的各种页面和堆栈上的帖子显示完全相同的方法来检查SD卡是否可写,所以我必须丢失一些东西.

更新:

我尝试以下代码,并抛出ioexception权限被拒绝.

  1. File TestFile = new File(sd + "/testfile.txt");
  2. try {
  3. boolean result = TestFile.createNewFile();
  4. if(result)
  5. {
  6. Log.i("tag","successfully created file");
  7. } else {
  8. Log.i("tag","Failed to create file");
  9. }
  10. } catch (IOException e) {
  11. Log.e("tag",e.toString() + " " + TestFile);
  12. return false;
  13. }

我已经格式化了我的SD卡,重新安装它,并重新启动了手机,但仍然有同样的错误.

UPDATE

显然,这是我自己的无知导致它失败.我的权限阻止在我的清单的错误部分.再次感谢 :)

解决方法

我不会使用sd.canWrite(),实际上,我会使用这样的东西:
  1. String state = Environment.getExternalStorageState();
  2. if (Environment.MEDIA_MOUNTED.equals(state)) {
  3. Log.d("Test","sdcard mounted and writable");
  4. }
  5. else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
  6. Log.d("Test","sdcard mounted readonly");
  7. }
  8. else {
  9. Log.d("Test","sdcard state: " + state);
  10. }

摘自此处:http://www.xinotes.org/notes/note/1270/

猜你在找的Java相关文章