【问题标题】:android inotify_add_watch failed : permission denied?android inotify_add_watch 失败:权限被拒绝?
【发布时间】:2017-08-29 01:18:17
【问题描述】:

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

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

控制台显示:

W libFileDialog.so: (null):0 ((null)): inotify_add_watch("/data/user") failed: "Permission denied"
W libFileDialog.so: (null):0 ((null)): inotify_add_watch("/data") 失败: "Permission denied"
W libFileDialog.so: (null):0 ((null)): inotify_add_watch("/") failed: "Permission denied"
W libFileDialog.so: (null):0 ((null)): inotify_add_watch("/data") 失败: "Permission denied"
W libFileDialog.so:(null):0((null)):inotify_add_watch(“/data/user”)失败:“权限被拒绝”
W libFileDialog.so: (null):0 ((null)): inotify_add_watch("/data/user/0") failed: "Permission denied"

我添加了权限

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

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

但它仍然说 inotify_add_watch failed 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 没有相关目录的读取权限。

标签: android c++ qt permissions


【解决方案1】:

我有使用 inotify 和 FileObserver 的经验,但没有使用 Qt。但是有些事情是全球性的,正如 Sam 所说,您没有 root 权限。这是一种操作系统保护,如果您有root access,它有时可能会起作用,您的 Windows 模拟器可能就是这种情况(如果我理解正确的话)。您不应依赖 root 访问权限,并且您的应用程序仅限于其自己的内部存储器和外部存储器,如 here 所述。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2021-07-02
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多