【发布时间】:2018-04-01 14:56:20
【问题描述】:
我使用QStorageInfo::mountedVolumes() 获取卷列表,然后使用rootPath() 获取每个卷列表,但我得到的结果很混乱:
/storage/613C-16DF Y
/storage/emulated N
/storage YN
/persist N
/efs N
/firmware-modem N
/firmware N
/cache N
/data N
/system Y
N
N
N
N
N
N
/mnt YN
Y 表示它按预期工作,N 表示它根本不工作,YN - 一些子目录工作,其他人不工作。还有 6 卷“无名”卷,都不起作用。
还有/storage/emulated/0 未列出,但我知道它可以工作并为我提供集成存储。
从普通用户的角度来看,设备应该只列出两个卷:
/storage/emulated/0 - integrated memory
/storage/613C-16DF - external sd card
奇怪的是,我可以从/storage 到/613C-16DF,但我不能去/emulated,即使我可以直接去/storage/emulated/0。
问题是如何获得更清晰的结果。我可以硬编码/storage/emulated/0,但我不能硬编码外部 sd 卡容量,因为它会发生变化,而且设备可能有更多的用户容量。
过滤掉所有不是isValid()的,去掉空白的,其余的都一样。
这可能与我正在使用(实验性?)QML Qt.labs.folderlistmodel 2.1 API 有关。
【问题讨论】:
-
dtech,困惑:
QStorageInfo::mountedVolumes()是 qt 类?虽然搜索Qt.labs.folderlistmodel 2.1不包括类型mountedVolumes? -
QStorageInfo是一个 C++ 类,与folderlistmodel无关。 -
但是你的最后一行是什么意思?
-
这意味着在 GUI 端我使用 QML 和
folderlistmodel而不是基于 QtWidget 的文件模型/对话框。 -
我认为您可以使用
QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)获取内部存储位置 (/storage/emulated/0)。 AFAIK 您无法通过QStandardPaths获取外部 SD 卡位置。
标签: android c++ qt qml storage