android - Android 中的 Qt 和应用程序数据存储
问题描述
我正在开发一个使用 Qt/C++ 的移动应用程序,现在专注于 Android。我的应用程序需要以私密和安全的方式存储一些永久数据(其他应用程序无法访问,尽可能受到保护):
- 一些基本的键/值设置: QSettings 似乎是我需要的。问题是这在 Android 中最终会出现在哪里,它是否存储在共享首选项部分?
- 二进制文件,例如一些图片(这些是由应用程序创建的,而不是静态资源)。我会将其存储在内部存储文件中;我将把它存储在 Qt 的什么地方?我是否使用 Qt 的文件功能和 java 调用来查找我的应用程序的内部存储文件夹,或者是否有为此设计的 Qt 对象?
谢谢。
解决方案
Android 在 path 下为应用程序维护了一个标准的/data/user/0
存储空间,每个应用程序都在这里获得存储空间。因此,如果您有一个名为 的应用程序org.qtproject.example.myApp
,Android 会自动为该应用程序创建存储空间:
/data/user/0/org.qtproject.example.myApp
设置存储在files
此路径的文件夹下,如../files/.config/OrganizationName/AppName.conf
当您想在 Android 中存储信息时,您不使用绝对路径,而是使用 Qt 指定存储位置,QStandardPaths
这通常返回上述应用程序路径下的位置,例如,要存储文件mySomeFile
,您可以设置路径使用QStandardPaths
类似:
auto path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
auto fileName= path + "/mySomeFile";
并且文件存储为:
/data/user/0/org.qtproject.example.myApp/files/mySomeFile
推荐阅读
- xml - 如何将 XML 转换为 UTF-8 并保留标头
- r - 在 2D 平面中计算从点到点的罗盘航向
- jooq - jOOQ、Pojos 和数据库优先设计
- python - 我的代码读取此 csv 文件并将第一列命名为“团队”时遇到问题
- c# - 从通用项目工厂返回的随机项目(加权)
- arrays - 熊猫数据框列以二维数组的形式出现,其中包含引号
- javascript - 主 js 文件不导入创建的分块文件
- oauth - 为 React Native 扩展 Strapi Social Auth Providers API
- bash - 如何延迟/防止 bash 函数参数中的星号扩展?
- reactjs - 使用 react-adal 访问受 Azure AD 保护的 API 时出现 401 错误