保存到外部存储

时间:2014-11-20 20:13:07

标签: android android-studio storage

我现在明白“外部存储”不一定是SD卡,而是指电话分配给“外部”而不是“内部”的另一个存储区域。

我的问题是现在为我的应用创建目录。当我使用Nexus 5模拟器在Android Studio中编译时,我的应用程序崩溃,错误是(创建日志后)Failed to create directory

我已经添加了权限但仍然有困难。我在编写目录之前在代码中添加了一个断点,并收到以下信息:

SD卡/存储 图片/ Appname(我正在使用图片目录)

在我的logcat中看到这些字符串后,它不会创建目录。这是我正在使用的代码块:

File mediaStorageDir = new File(Environment.DIRECTORY_PICTURES, "AppName");

if (!mediaStorageDir.exists()) {
    if (!mediaStorageDir.mkdir())
        Log.d("AppName", "failed to create directory");
    return null;
}

有人能引导我朝着正确的方向前进吗?谢谢!


编辑:

我添加了一个支票外部存储空间:

public static boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
            Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

并返回false!我在输入上面的代码之前运行了这个。有任何想法吗??我添加了权限(写入外部),它仍然无法正常工作。

2 个答案:

答案 0 :(得分:0)

我正在使用Save.java类来为我保存所有照片,这是我创建目录的部分:

String file_path = Environment.getExternalStorageDirectory().getAbsolutePath()+ NameOfFolder;
File dir = new File(file_path);

if(!dir.exists()){
    dir.mkdirs();
}

该课程暂时可用this link

我这样叫这个班:

    ImageView imageview = (ImageView)findViewById(R.id.LoadingCarImageView);
    imageview.setDrawingCacheEnabled(true);
    Bitmap b = imageview.getDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(b);
    Save savefile = new Save();
    savefile.SaveImage(this,  bitmap, "stream");

告诉我这是否对你有帮助!

答案 1 :(得分:0)

您正在使用mkdir(),它只创建一个(最后)目录。 mkdirs()还会创建可能丢失的任何父目录。