簡體   English   中英

iOS上的應用程序專用目錄,可以訪問Qt API中的文件創建

[英]Application private directory on iOS with access to creation of files from Qt APIs

我在iOS上使用Qt應用程序並希望將文件保存到應用程序的私人目錄中,以便其他應用程序無法訪問我的文件。 通過這里的文檔閱讀,數據容器下的/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獲取路徑?

以某些ID為123XX-XXXX-XXXX-XXXX命名的目錄,這是應用程序目錄還是同一目錄下的Library/Application Support/MyApp

我有同樣的問題,例如我創建了一個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中的權限未被拒絕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM