Приложение камеры открывается правильно, фотография делается, но изображение никогда не сохраняется по указанному пути на устройстве.
Код: Выделить всё
void MainWindow::open_system_camera() {
QCameraPermission camPermission;
if (qApp - >checkPermission(camPermission) != Qt::PermissionStatus::Granted) {
qApp - >requestPermission(camPermission, this, [this](const QPermission & perm) {
if (perm.status() == Qt::PermissionStatus::Granted) open_system_camera();
});
return;
}
const QString dirPath = "/storage/emulated/0/Download/EtheryMobile";
QDir().mkpath(dirPath);
const QString timestamp = QDateTime::currentDateTime().toString("dd_MM_yyyy_HH_mm_ss");
pendingCameraFilePath = dirPath + "/photo_" + timestamp + ".jpg";
qInfo() (), fileObj.object());
QJniObject intent("android/content/Intent", "(Ljava/lang/String;)V", QJniObject::fromString("android.media.action.IMAGE_CAPTURE").object < jstring > ());
intent.callObjectMethod("putExtra", "(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;", QJniObject::fromString("android.intent.extra.OUTPUT").object < jstring > (), uri.object());
intent.callObjectMethod("addFlags", "(I)Landroid/content/Intent;", 0x00000001 | 0x00000002 // GRANT_READ_URI_PERMISSION | GRANT_WRITE_URI_PERMISSION
);
activity.callMethod < void > ("startActivity", "(Landroid/content/Intent;)V", intent.object());
cameraCheckTimer - >start();
}
Использование FileProvider с правильными полномочиями
Добавление FLAG_GRANT_READ_URI_PERMISSION и FLAG_GRANT_WRITE_URI_PERMISSION
Проверка конфигурации поставщика AndroidManifest.xml
Предварительное создание каталога
Запись пути к целевому файлу
Использование таймера для проверки создания файла после закрытия камеры
Использование QtNative::activity() и QAndroidApplication::context()
Запрос разрешения камеры через QCameraPermission
Я хочу знать, что я делаю неправильно? Будем признательны за любые рекомендации или рабочий пример для Qt 6.
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-using-fi
Мобильная версия