我现在明白“外部存储”不一定是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!我在输入上面的代码之前运行了这个。有任何想法吗??我添加了权限(写入外部),它仍然无法正常工作。
答案 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()还会创建可能丢失的任何父目录。