Как я вижу в вашем коде, createImageFile()
нигде не вызывается.Я думаю, что внутри вашего dispatchTakePictureIntent
вы должны вставить некоторый дополнительный код и сделать его следующим образом:
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
}
// Continue only if the File was successfully created
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this,
"YOUR_PACKAGE_NAME.provider",
photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
}
И вы должны создать внутри вашей папки xml в папке ресурсов файл с именем file_paths.xml.где вы можете написать код ниже, если это еще не сделано:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="my_images"
path="Android/data/YOUR_PACKAGE_NAME/files/Pictures" />
</paths>
Не забудьте также объявить провайдера в файле манифеста следующим образом:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Не забудьте заменить YOUR_PACKAGE_NAME вашим настоящим именем пакета.Затем внутри вашего метода onActivityResult
получите растровое изображение следующим образом:
File file = new File(mCurrentPhotoPath);
Bitmap bitmap = MediaStore.Images.Media
.getBitmap(getContentResolver(), Uri.fromFile(file));
img = (ImageView) findViewById (R.id.img);img.setImageBitmap (bitmap);
Попробуйте пошагово, уточните, если это возможно, и оставьте отзыв.Попросите разъяснения в комментариях, но сначала попробуйте, пожалуйста.