2014-02-03 3 views
0

Я побывал во многих местах для решения, но я все еще не мог понять свою ошибку.создание новой папки после фотографирования

Я попытался создать папку вручную, и изображение можно сохранить. Если я удалю папку, я больше не смогу сохранить изображение. Может ли кто-нибудь любезно указать, где моя ошибка?

Любая помощь очень ценится! Заранее спасибо!

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

ответ

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

Но в этом вы не создаете каталог, если он не существует, вы просто печать журнала, поэтому это происходит, как это.

+0

Привет там. Это то же самое. Я не мог нажать значок «Tick» после съемки. Однако, если у меня уже создана папка, она работает нормально. –

+0

Поскольку вы помещаете этот код после вызова «Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE)», эта строка помещает его над строкой, и все готово. – InnocentKiller

+0

Проверьте мой обновленный ответ, и если у вас есть какие-либо проблемы, сделайте комментарий, это поможет вам. – InnocentKiller

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

     } 
+0

Привет suresh, как бы я мог создать еще одну частную пустоту под onActivityResult. Это вернет мне ошибку. –

+0

Создайте отдельный метод в своем классе. Вы должны вызвать этот метод в OnActivityResult – suresh

Смежные вопросы