拍照后创建新文件夹

时间:2014-02-03 07:40:58

标签: java android

我去过很多地方寻求解决方案但是我仍然无法弄清楚我的错误。

我尝试手动创建文件夹,可以保存图片。如果我删除该文件夹,我将无法再保存该图片。有人可以指出我的错误在哪里吗?

非常感谢任何帮助!提前谢谢!

public void onClick( DialogInterface dialog, int item ) { //pick from camera
            if (item == 0) {
                Intent intent    = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

                File mediaStorageDir = new File(
                        Environment
                                .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                        IMAGE_DIRECTORY_NAME);

                // Create the storage directory if it does not exist
                if (!mediaStorageDir.exists()) {                        
                    if (!mediaStorageDir.mkdirs()) {
                        Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
                                + IMAGE_DIRECTORY_NAME + " directory");
                    }
                }

                mImageCaptureUri = Uri.fromFile(new File(mediaStorageDir.getPath() + File.separator
                        +"tmp_avatar_" + String.valueOf(System.currentTimeMillis()) + ".jpg"));


                intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);

                try {
                    intent.putExtra("return-data", true);

                    startActivityForResult(intent, PICK_FROM_CAMERA);
                } catch (ActivityNotFoundException e) {
                    e.printStackTrace();
                }
            } else { //pick from file
                Intent intent = new Intent();

                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);

                startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_FILE);
            }
        }

2 个答案:

答案 0 :(得分:1)

使用以下代码。

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
        IMAGE_DIRECTORY_NAME);

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

Intent intent    = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

您正在使用以下代码

if (!mediaStorageDir.exists()) {                        
                    if (!mediaStorageDir.mkdirs()) {
                        Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create "
                                + IMAGE_DIRECTORY_NAME + " directory");
                    }
                }

但是在这个你没有创建目录,如果它不存在,你只是打印日志就是这样的原因。

答案 1 :(得分:0)

在onActivityResult中使用以下代码

private void createDirectoryAndSaveFile(Bitmap imageToSave, String fileName) {

File direct = new File(Environment.getExternalStorageDirectory() + "/DirName");

if (!direct.exists()) {
    File wallpaperDirectory = new File("/sdcard/DirName/");
    wallpaperDirectory.mkdirs();
  }

    File file = new File(new File("/sdcard/DirName/"), fileName);
    if (file.exists())
        file.delete();
    try {
        FileOutputStream out = new FileOutputStream(file);
        imageToSave.compress(Bitmap.CompressFormat.JPEG, 100, out);
        out.flush();
        out.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

         }