Есть ли способ открыть локальные файлы на Android с помощью Qt 5.12.x?

#android #qt #qdesktopservices

#Android #qt #qdesktopservices

Вопрос:

Я пытаюсь открыть PDF-файл на Android, который я загрузил на:

 QStandardPaths::writableLocation(QStandardPaths::TempLocation)
  

Код для открытия PDF:

 QUrl url;
if (filePath.startsWith("\\") || filePath.startsWith("//")) {
  url.setUrl(QDir::toNativeSeparators(filePath));
} else {
  url = QUrl::fromLocalFile(filePath);
}
return QDesktopServices::openUrl(url);
  

Я получаю следующую ошибку:

 android.os.FileUriExposedException: file:///data/user/0/my.app/cache/myPDF.pdf exposed beyond app through Intent.getData()
  

Есть ли способ решить эту проблему с помощью Qt?

Комментарии:

1. Бьюсь об заклад, что поиск «qt android fileprovider» должен сделать это

2. Спасибо, я понял, что поисковый запрос был тем, что я искал, в этом блоге действительно хорошо описывается использование FileProvider: blog.qt.io/blog/2017/12/01/sharing-files-android-ios-qt-app

3. проблема в том, что если вы «всего лишь qt guy», вы не будете знать о fileprovider … вот почему было бы сложно получить правильный запрос 🙂