【问题标题】:Application private directory on iOS with access to creation of files from Qt APIsiOS 上的应用程序私有目录,可访问从 Qt API 创建文件
【发布时间】:2017-07-17 21:04:46
【问题描述】:

我在 iOS 上使用 Qt 应用程序 并希望将文件保存到 应用程序的私有目录 以便其他应用程序无法访问我的文件。阅读数据容器下的文档here/Documents 目录看起来是保存我的应用程序私有文件的路径。

首先我选择使用返回的QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) /var/mobile/Containers/Data/Application/123XX-XXXX-XXXX-XXXX/Library/Application Support/MyApp。但后来我发现我无法在那里创建任何文件。在 App 文件夹中也尝试了/Documents。但徒劳无功。

其次我尝试了QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation),它返回了/var/mobile/Containers/Data/Application/123XX-XXXX-XXXX-XXXX/Documents。我可以在这里创建和保存我的文件。

在 iOS 上,哪个是创建应用程序私有文件的正确路径?
如何使用 Qt 获取路径?

123XX-XXXX-XXXX-XXXX命名的目录,这是应用程序目录还是同一目录内的Library/Application Support/MyApp

【问题讨论】:

  • 你试过"./",当前工作目录吗?这就是我在 Android 中做同样的事情的方式。由于应用是沙箱化的,所以应用启动的目录可能在应用文件沙箱内。
  • 原来QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) 返回了应用程序文件夹,但我必须在 ios 上将/Documents 添加到它,正如我所说。 但最重要的学习是,如果路径不存在,我会使用QDir::mkpath 创建它,就像全新安装一样。我正在尝试 mkdir 未能创建任何文件夹。似乎QDir::mkpath 比使用其他任何东西来创建文件夹要好。我现在可以将它保存在 ios 和 android 的应用沙箱中

标签: ios iphone qt file ipad


【解决方案1】:

我有同样的问题,例如我创建了一个 sqlite 文件。但是您将创建的文件可以是您想要的每个文件。在我的示例中,我需要创建一个 sqlite 文件。

我是这样解决的:

    QString dbName = "mydb.sql";
    QString dbLocation;

       #ifdef Q_OS_ANDROID
          dbLocation = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
       #endif

       #ifdef Q_OS_IOS
          dbLocation = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
       #endif

    db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(dbLocation + "/" + dbName);
    qDebug() << db.database(dbLocation + "/" + dbName);
    qDebug() << db.databaseName();

现在您可以保存文件了,我使用 DocumentsLocation 来获取路径,始终适用于 iOS,但不适用于 Android,要为 Android 做好准备,您使用另一个路径:AppDataLocation。 在文档位置,您可以在 iOS 上写入/读取/放置和创建文件。 在 AppDataLocation 位置,您可以在 Android 上写入/读取/放置和创建文件。 DocumentsLocation 中的权限未被拒绝。

【讨论】:

    猜你喜欢
    • 2015-09-06
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多