Я пытаюсь сохранить изображение на SD-карту, и я добавил для него некоторый код. Но после нажатия кнопки "ОК"/"Checkmark" в камере мое приложение выйдет. Должен ли я проверить, не каталог, который я пытаюсь сохранить в существует? Как я могу это сделать?..! file.exists() {file.mkdirs}? В моем коде я попытался сохранить его в папке /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);
}
}
Создайте каталог перед созданием файла.
boolean createdDirectory = new File(Environment.getExternalStorageDirectory().getPath() + "/directory1/directory2/directory3/").mkdirs();
переменная createdDirectory
будет
true тогда и только тогда, когда каталог был создан вместе со всеми необходимыми родительскими каталогами; false в противном случае
Вам нужно будет убедиться, что ваше приложение имеет разрешение на запись на SD-карту (проверьте ваш AndroidManifest.xml
)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Вы дали разрешение Write_External_Storage
в AndroidManifest.xml
, это важно для сохранения фотографий на SD-карте