2012-05-29 2 views
1

Я пытаюсь сохранить изображение на SD-карте, и я добавил для него некоторый код. Но после нажатия кнопки «OK»/Checkmark в камере мое приложение выйдет. Я должен проверить, существует ли каталог, который я пытаюсь сохранить в нем? Как бы это сделать? ..! File.exists() {file.mkdirs}? В моем коде я попытался сохранить его в папке/Android, которая существует на каждой SD-карте.Android: приложение выходит при попытке сохранить изображение на SD-карту

  file = new File(Environment.getExternalStorageDirectory().getPath() 
       + "/Android/" + "bhe_app" + ".jpg"); 

    imageUri = Uri.fromFile(file); 

i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 

     startActivityForResult(i, cameraData); 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     bmp = (Bitmap) extras.get("data"); 
     iv.setImageBitmap(bmp); 


    } 
} 

ответ

3

Создайте каталог перед созданием файла.

boolean createdDirectory = new File(Environment.getExternalStorageDirectory().getPath() + "/directory1/directory2/directory3/").mkdirs(); 

переменная createdDirectory будет

истинно, если и только если каталог был создан, вместе со всеми необходимыми родительских каталогов; ложь в противном случае

Вы должны убедиться, что ваше приложение имеет разрешение на запись на карту памяти SD (Проверьте ваш AndroidManifest.xml)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

Я просто добавил разрешение. – Ravin

0

Вы дали разрешение на Write_External_Storage в AndroidManifest.xml, тот важно для сохранения фото на сд карте

+0

я просто did..but приложение все еще выходит после того, как я ударил кнопку «ОК»/галочку на камере ... это было бы потому, что нет такой директории? ... и как проверить, выходит ли каталог, и она не создаёт ее .. что-то делать с dir.mkdirs ()? – Ravin

+0

какая ошибка, увидеть ее в журнале и попытаться сохранить изображение непосредственно на SD-карте вместо того, чтобы поместить ее в каталог –

+0

Я просматривал учебные пособия Google, и я внес несколько изменений в код. Теперь, изображение сохраняется, но как только я нажал галочку для камеры, приложение выйдет. Я сделал несколько изменений, например: file = new Файл ( Environment .getExternalStoragePublicTirectory (Environment.DIRECTORY_PICTURES), «Приложение BHE»); mediaFile = newFile (file.getPath() + File.separator + "Image1.jpg"); if (! file.exists()) {try {file.createNewFile(); } catch (IOException e) { e.printStackTrace(); }} imageUri = Uri.fromFile (mediaFile); – Ravin