Я хочу создать приложение, которое, когда пользователь нажимает кнопку, переводит вас в приложение камеры по умолчанию на телефоне, захватывает изображения и возвращает его в объект просмотра изображений для отображения в действии. Ниже приведен код, который у меня есть.
ПРОБЛЕМА. Проблема в том, что изображение не отображается в режиме просмотра изображений. Он возвращается к активности после съемки, но не отображает его.
AndroidManifest. xml имеет следующее добавленное:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera" android:required="true" />
...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.application.hidden.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
file_paths. xml:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-files-path name="my_images" path="/" />
</paths>
MainActivity. java
private File createImageFile() throws IOException {
String timeStamp =
new SimpleDateFormat("yyyyMMdd_HHmmss",
Locale.getDefault()).format(new Date());
String imageFileName = "IMG_" + timeStamp + "_";
File storageDir = this.getContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName,
".jpg",
storageDir
);
imagePath = image.getAbsolutePath();
return image;
}
@OnClick({R.id.takePicture, R.id.pic})
void onTakePic() {
changeImageLayout.setVisibility(GONE);
System.out.println("Setting up for capture, clicked on camera");
Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if(pictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
//Create a file to store the image
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
}
if(photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this.getContext(),"com.application.hidden.provider", photoFile);
pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(pictureIntent, RESULT_LOAD_CAMERA_IMG);
}
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
case RESULT_LOAD_CAMERA_IMG:
switch (resultCode) {
case Activity.RESULT_OK:
Glide.with(this).load(imagePath).into(listingImage);
break;
case Activity.RESULT_CANCELED:
isNewImageAdded = false;
break;
default:
break;
}
break;
default:
break;
}
}
Буду признателен за любые предложения или помощь!
Спасибо.