2013-06-08 4 views
0

Когда я беру фотографию с моим приложением, я хотел бы сохранить его как этотПочему файл сохраняется здесь?

Android/data/com.androidproject/files/Camera/photo.png 

Однако в настоящее время экономии здесь, по моему заявлению Log.v

file:///storage/emulated/0/Android/data/com.androidproject/files/Camera/photo.png 

Это мой код

private class ClickListener implements View.OnClickListener { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

      File dir = new File(getActivity().getExternalFilesDir("Camera"), 
        "photo.png");    
      Uri outputFileUri = Uri.fromFile(dir); 
      Log.v("FILE", "" + outputFileUri); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
      startActivityForResult(intent, CALL_BACK); 
     } 

    } 

Так почему же не сохранить файл в нужное место? Как это исправить?

ответ

1

использовать getFilesDir() вместо getExternalFilesDir(), чтобы сохранить их во внутренней памяти.

File f = new File(getFilesDir() + File.separator + "Camera" + File.separator + "photo.png"); 
f.mkdirs(); 

Это установит ваш новый файл и убедитесь, что путь к нему существует.

+0

Когда я переключаю его, он больше не будет принимать аргумент «Камера». Где я могу объявить это своей папкой? Кроме того, у меня есть отдельный фрагмент, который использует эту точную команду, getExternalFilesDir() и отлично работает –

+0

См. Отредактированный ответ. –

+0

Команда 'getExternalFiesDir()' всегда будет определять местоположение вашего файла для хранения файлов на SDCARD вашего устройства. –

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