Accessibilità risorse QML in Android
-
Ciao a tutti,
Ho un progetto QML, nel quale c'è la classica area di risorse (qml.qrc).
Quando viene compilato e trasferito su Android ho capito che il tutto risiede in un'area normalmente non accessibile agli utenti (area visibile solo se si hanno i permessi di root).Nell'area risorse, oltre alla classica cartella "images" ho creato un'altra cartella "pdf" dove sono conservati alcuni pdf che vorrei aprire da codice, alla pressione di un pulsante (immaginiamo myPdfFile.pdf)
Mi viene però il dubbio che questa cosa sia impossibile di principio, essendo appunto un'area accessibile solo a chi ha i permessi di root.
In ogni caso, se dovesse essere possibile, ci sarebbe il problema di capire il percorso assoluto di questa cartella. Questo perché per aprire un pdf utilizzo questa funzione lato c++ in cui bisogna passargli (nella var. file) il percorso completo.
void MyPDF::openPDF(QString file) { QDesktopServices::openUrl(QUrl::fromLocalFile(file)); }
Ora, nel main.c ho inserito questa riga:
qDebug() << "Application Dir path:" << QCoreApplication::applicationDirPath();
che ha risposto
Application Dir path: "/data/app/org.qtproject.example-2/lib/arm"quindi ho supposto che il mio folder pdf sia
/data/app/org.qtproject.example-2/lib/arm/pdfchiamando però la funzione
openPDF("/data/app/org.qtproject.example-2/lib/arm/pdf/myPdfFile.pdf")il lettore PDF si apre ma il file no (con un avviso "fail to load pdf file").
Credo a questo punto che le ipotesi siano 2:- il path è sbagliato: ApplicationDirPath è una cosa, le risorse stanno da un'altra parte
- il path è corretto ma l'accesso al file è inibito perché non ho i permessi di root
(in realtà potrebbero anche essere entrambi ;-)
Chiedo quindi se qualcuno ha mai avuto problemi del genere
Grazie! -
Purtroppo non e' per niente banale. L'immenso @ekkescorner ha scritto un blog che illustra il processo: https://blog.qt.io/blog/2017/12/01/sharing-files-android-ios-qt-app/