Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android inotify\u添加\u监视失败:权限被拒绝?_Android_C++_Qt_Permissions - Fatal编程技术网

android inotify\u添加\u监视失败:权限被拒绝?

android inotify\u添加\u监视失败:权限被拒绝?,android,c++,qt,permissions,Android,C++,Qt,Permissions,我正在使用QtCreator和Qt for android。 我试图在android上使用QFileSystemModel制作一个文件对话框应用程序。 我正在调试我的手机(HTC A9) 除了我的软件包(QDir::currentPath()),我在手机上看不到任何其他内容 但是,如果我设置为QDir::rootPath(),则文件对话框在开始时只显示/而不显示任何内容(在我尝试访问它之后没有显示任何内容) 控制台显示: W libFileDialog.so:(null):0((null)):i

我正在使用QtCreator和Qt for android。
我试图在android上使用QFileSystemModel制作一个文件对话框应用程序。
我正在调试我的手机(HTC A9)

除了我的软件包(QDir::currentPath()),我在手机上看不到任何其他内容 但是,如果我设置为QDir::rootPath(),则文件对话框在开始时只显示/而不显示任何内容(在我尝试访问它之后没有显示任何内容)

控制台显示:

W libFileDialog.so:(null):0((null)):inotify\u add\u watch(“/data/user”)失败:“权限被拒绝”
W libFileDialog.so:(null):0((null)):inotify\u add\u watch(“/data”)失败:“权限被拒绝”
W libFileDialog.so:(null):0((null)):inotify_add_watch(“/”)失败:“权限被拒绝”
W libFileDialog.so:(null):0((null)):inotify\u add\u watch(“/data”)失败:“权限被拒绝”
W libFileDialog.so:(null):0((null)):inotify\u add\u watch(“/data/user”)失败:“权限被拒绝”
W libFileDialog.so:(null):0((null)):inotify_add_watch(“/data/user/0”)失败:“权限被拒绝”

我添加了权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

我只是在运行时需要请求权限后才读到


我调用了静态java方法来请求权限,它被授予了权限,但我仍然看不到文件。
(唯一的区别是我可以在虚拟设备中看到/sdcard。)

我有使用inotify和FileObserver的经验,但没有使用Qt的经验。但是有些事情是全局性的,正如Sam所说,您没有root权限。这是一种操作系统保护,如果您有,它有时可能会起作用,在windows emulator上可能就是这样(如果我理解正确的话)。您不应该依赖于根访问,您的应用程序仅限于其自身的内部内存和外部内存(如图所示)


无论如何,要回答您的问题,您不需要学习java,FileObserver只是inotify api的包装器,inotify api是一种操作系统(linux)api。

这看起来像是基本的文件系统权限。您的进程的PID对相关目录没有读取权限。
_fileModel = new QFileSystemModel;
_fileModel->setReadOnly(false);
_fileModel->setRootPath(QDir::rootPath());
_fileModel->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files);
ui->listView->setModel(_fileModel);