Михаиллл
28 июля 2019 г. 21:42

Как в Qt сохранить файл в папку загрузок в Android

Добрый день.
Как в Qt сохранить файл в папку загрузок в Android.
В Windows нормально сохраняет.
Пробовал сохранять в эти папки, но не чего не выходит

  1. downloadFolderAddress = "/storage/emulated/0/Download/";
  2. downloadFolderAddress = "/storage/sdcard0/download/";
3

Вам это нравится? Поделитесь в социальных сетях!

8
Михаиллл
  • 29 июля 2019 г. 0:21
  • (ред.)

Так нашел папку загрузок, но все равно не могу в нее записать.

  1. QStandardPaths::standardLocations(QStandardPaths::DownloadLocation)

Останавливается работа перед открытие файла после

  1. QFile *file = new QFile(downloadFolderAddress + nameFile);
    Evgenii Legotckoi
    • 29 июля 2019 г. 13:14

    Добрый день!

    Попробуйте так

    1. QFile file(saveFileName);
    2. if (!file.open(QIODevice::WriteOnly))
    3. {
    4. return;
    5. }
    6.  
    7. // Запись в файл
    8.  
    9. file.close();

    Также, я бы убедился, что вот это возвращает правильный путь к файлу downloadFolderAddress + nameFile

    Вполне возможно, что вам там ещё слеш нужен

    1. downloadFolderAddress + "/" + nameFile
      Михаиллл
      • 29 июля 2019 г. 13:48
      • Ответ был помечен как решение.

      Если такое делать, то работает

      1. bool requestAndroidPermissions(){
      2. //Request requiered permissions at runtime
      3.  
      4. const QVector<QString> permissions({
      5. "android.permission.WRITE_EXTERNAL_STORAGE",
      6. "android.permission.READ_EXTERNAL_STORAGE"});
      7.  
      8. for(const QString &permission : permissions){
      9. auto result = QtAndroid::checkPermission(permission);
      10. if(result == QtAndroid::PermissionResult::Denied){
      11. auto resultHash = QtAndroid::requestPermissionsSync(QStringList({permission}));
      12. if(resultHash[permission] == QtAndroid::PermissionResult::Denied)
      13. return false;
      14. }
      15. }
      16.  
      17. return true;
      18. }
        Михаиллл
        • 29 июля 2019 г. 13:49

        Нужно перед каждой записью эту делать.

          Evgenii Legotckoi
          • 29 июля 2019 г. 13:50

          Понятно, то есть всё упёрлось в права доступа. Раньше такой проблемы не было.

            Михаиллл
            • 29 июля 2019 г. 13:53

            Да, странные трудности. И ведь в манифесте я это добавил

              D
              • 8 июля 2020 г. 17:09

              можете подсказать куда прописать этот код. У меня такая же проблема, нужно создавать файлы в папке зарузок

                Михаиллл
                • 8 июля 2020 г. 18:52

                Вызывайте эту функцию или в самом начале, или когда нужно сохранять файлы. Она дает права доступа для записи.

                  Комментарии

                  Только авторизованные пользователи могут публиковать комментарии.
                  Пожалуйста, авторизуйтесь или зарегистрируйтесь
                  • Последние комментарии
                  • IscanderChe
                    12 апреля 2025 г. 17:12
                    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
                  • AK
                    1 апреля 2025 г. 11:41
                    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
                  • Evgenii Legotckoi
                    9 марта 2025 г. 21:02
                    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
                  • VP
                    9 марта 2025 г. 16:14
                    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
                  • ИМ
                    22 ноября 2024 г. 21:51
                    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…