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

标签 java android

我已经设置了以下我的 android list :

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

我的 Activity 中有以下内容:

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

sd 返回/mnt/sdcard

我在我的设备 (evo 3d) 上测试,而不是模拟器。 sd卡已挂载。在仅充电模式和未插入 USB 电缆时都会发生这种情况。谷歌上的各种页面和堆栈上的帖子显示了完全相同的方法来检查 SD 卡是否可写,所以我一定是遗漏了一些东西。

更新:

我尝试了以下代码,它抛出 ioexception permission denied。

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

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

更新

显然是我自己的无知导致了它的失败。我在 list 的错误部分中设置了我的权限 block 。再次感谢 :)

最佳答案

我不会使用 sd.canWrite(),实际上,我会使用这样的东西:

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

取自这里:http://www.xinotes.org/notes/note/1270/

关于java - sd.canWrite() 总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942677/

相关文章:

java - 创建具有多个子元素的 XML 文件

android - Flutter 将小部件对齐到 ROW 的顶部

java - Android同时加分

java - 序列化并不总是以序列化原始类型结束吗?

java - Java/GWT 客户端中的常量 : static final vs Enums

java - 一起使用SQLite可读可写数据库

java - 创建自定义类! java

android - Firefox 远程调试不起作用

android - 如何从两个不同的角度旋转 View ?

java - Android 应用内结算 : Ads are not removing when In-App is made