我正在使用QtCreator和Qt的機器人。
我正試圖使用QFileSystemModel在Android上創建文件對話框應用程序。
而我正在調試我的手機(HTC A9)。android inotify_add_watch失敗:權限被拒絕?
我看不到我的手機上的任何其他內容,除了我的包(QDir :: currentPath()) ,但如果我設置爲QDir :: rootPath(),文件對話框只顯示/之後我嘗試訪問它)
控制檯顯示:
W¯¯libFileDialog.so:(空):0((空)):inotify_add_watch( 「/數據/用戶」)失敗:「權限被拒絕「
W libFileDialog.so:(null):0((null)):inotify_add_watch(」/ data「)失敗:」權限被拒絕「
W libFileDia ():0((null)):inotify_add_watch(「/」)失敗:「權限被拒絕」
W libFileDialog.so:(null):0 「):失敗:」權限被拒絕「
W libFileDialog.so:(null):0((null)):inotify_add_watch(」/ data/user「)失敗: ):0((空)):inotify_add_watch( 「/數據/用戶/ 0」)失敗: 「權限被拒絕」
我添加權限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
但它仍然說inotify_add_watc h失敗blahblah ...
它在Windows上完全正常工作。 如果我使用虛擬設備進行調試,它有時仍然會拒絕,但是當我嘗試將模型的根路徑設置爲某個稱爲(日期,配置等)的目錄時,它僅拒絕權限。
我應該如何解決該問題?
或者是大約只有C++編碼的Android應用程序的問題,所以它告訴我去學JAVA?(我真的想堅持到C++:C)
代碼:
_fileModel = new QFileSystemModel;
_fileModel->setReadOnly(false);
_fileModel->setRootPath(QDir::rootPath());
_fileModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files);
ui->listView->setModel(_fileModel);
我剛纔讀到,我需要在運行時請求權限。
我調用靜態Java方法來請求權限,它被授予,但我仍然無法看到文件。 (唯一不同的是,我可以在我的虛擬設備中看到/ sdcard。)
這看起來像基本的文件系統權限。您的進程的PID對相關目錄沒有讀取權限。 –