Код: Выделить всё
actionTakePicture = activity.registerForActivityResult(
new ActivityResultContracts.TakePicture(),
success -> onPictureTaken(success));
public void dispatchTakePictureIntent(@Nullable Bundle bundle) {`
// Create the File where the photo should go
File photoFile;
try {
photoFile = createImageFile();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
this.bundle = bundle;
Uri photoURI = FileProvider.getUriForFile(activity,
"at.kandu.warehouse.fileprovider", photoFile);
actionTakePicture.launch(photoURI);
}
private File createImageFile() throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalStorageFilesDir();
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
imagePath = image.getAbsolutePath();
return image;
}
Код: Выделить всё
android:name="androidx.core.content.FileProvider"
android:authorities="at.kandu.warehouse.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
Код: Выделить всё
Моя проблема возникает после обновления версии или переустановки приложения для Android с последующей отправкой намерение TakePicture. В первый раз запрашивается разрешение на использование камеры, и приложение «Камера» открывается как отдельное приложение, как это видно на рисунке:
Приложение «Камера» как отдельное приложение в стек
Если я сделаю снимок в этот момент, изображение сохранится не в целевом файле в photoURI, а в фотогалерее телефона и намерение не возвращается и **onPictureTaken(success) **метод никогда не вызывается.
Если я попытаюсь снова открыть намерение TakePicture, приложение камеры будет выглядеть так, как будто оно является частью стека приложений, и правильно сохранит фотографии в целевом файле в photoURI
Приложение камеры является частью стека моего приложения
Кто-нибудь знает, как решить эту проблему ? Возможно, проблема в всплывающих окнах с разрешениями.
Я убедился, что файл существует в целевом photoURI. Разрешения на открытие камеры предоставлены. Это происходит только в первый раз, когда я отправляю намерение TakePicture после переустановки приложения.
Подробнее здесь: https://stackoverflow.com/questions/792 ... f-target-u