Я использую библиотеку EasyPermissions от Google. В моем приложении у меня две кнопки: одна для записи видео и одна для захвата изображения. Поскольку оба требуют разрешения камеры, они оба аннотируются с @AfterPermissionGranted
.Оба метода запускаются после разрешений
Так что мой метод записи видео выглядит следующим образом:
@Override
@AfterPermissionGranted(RC_CAMERA_PERM)
public void openCameraToRecordVideo() {
if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Code here
}
И точно так же для съемки:
@Override
@AfterPermissionGranted(RC_CAMERA_PERM)
public void openCameraToCaptureImage() {
if (EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Code here
}
Они оба аннотированный с разрешениями, так как я не знаю, какой пользователь будет нажмите сначала.
Что происходит, когда пользователь нажимает одну кнопку и принимает разрешения, то методы запускаются один за другим. Это, очевидно, не то поведение, которое я хочу.
Я очень благодарен за помощь в решении этой проблемы. Спасибо.
Это в значительной степени то, что я, наконец, сделал. Я добавил два булевых поля: 'recordVideo' и' captureImage' и на основании нажатия кнопки. Я установил соответствующее поле в значение true. Затем, когда запускается 'openCamera()', я проверяю, какое поле истинно, и я запускаю соответствующую функцию openCameraXXX. Спасибо за Ваш ответ. – Mes