无法在Android上写入外部存储

Tra*_*mot 2 java io android

我看到其他一些人问同样的问题,但是发布的解决方案都没有帮助我.

我正在尝试从我的Android应用程序将(二进制)文件写入外部存储.我放入<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />了我的清单,但我仍然无法创建任何文件.我用来创建文件的代码是

File folder = new File(Environment.getExternalStorageDirectory(), SAVE_DIRECTORY);
File toWrite = new File(folder, "save.bin");
if(!toWrite.exists()){
    try {
        if(!folder.mkdirs())
            Log.e("Save", "Failed to create directories for save file!");
        toWrite.createNewFile();
     } catch (IOException e) {
         Log.e("Save", "Failed to create save file! " + e.getMessage());
     }
 }
Run Code Online (Sandbox Code Playgroud)

调用mkdirs()失败,并createNewFile()抛出IOException(ENOENT,因为该目录不存在)

有谁知道怎么了?我甚至试过重启我的设备.我在Nexus 7上使用API​​级别8,如果它有任何区别的话.

tes*_*984 5

首先,您应该检查ExternalStorageState

public static boolean isSDCARDAvailable(){
   return Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
}
Run Code Online (Sandbox Code Playgroud)

如果此方法isSDCARDAvailable返回true,则使用您的代码

添加权限:

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

  • 我发现你不仅仅返回"等于"方法的结果而不是问号和冒号,这很有趣. (2认同)