Доступ для чтения корневой папки Android - PullRequest
0 голосов
/ 10 июля 2019

Мне нужно прочитать папки внутри корневой файловой системы Android.Все файловые менеджеры Android могут делать это без «рутирования» устройства.Но в моем случае я получил странный результат.

Приложение написано с использованием Qt5 / C ++.Это не новое приложение, но достаточно старое.Разрешения на доступ к медиафайлам предоставляются READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE в AndroidMainfest.xml и динамическим запросом.Приложение открыло папку / mnt, чтобы позволить пользователю найти музыкальные файлы на нем.Но на некоторых устройствах внешняя SD-карта не монтируется в / mnt.Поэтому я хочу изменить приложение, чтобы позволить пользователю читать корень / папку и позволить найти музыку на нем.Следующий код:

    QTreeView* tv = new QTreeView(this);
    QFileSystemModel* fsm = new QFileSystemModel(this);
    tv->setModel( fsm );
1:    tv->setRootIndex( fsm->setRootPath( "//mnt/" ) ); // Android & Linux Ok
2:   //tv->setRootIndex( fsm->setRootPath( QDir::rootPath() ) ); // Linux Ok, Android not

Прекрасно работает в Android и настольных Linux.Но если строка комментария после метки 1: и строка комментария после метки 2: - тогда код будет работать только в Linux.Это даст в виде дерева все файлы и каталоги внутри корневого каталога "/".Но в Android это даст пустой результат.Ничего такого.Это не относится к Qt5 - это проблема Android.QDir :: rootPath () == "/".

Кто-нибудь знает, что нужно для того, чтобы приложение могло читать корневую директорию в Android?

...