Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Qt Mobile Application for Android
Forum Updated to NodeBB v4.3 + New Features

Qt Mobile Application for Android

Scheduled Pinned Locked Moved Solved Mobile and Embedded
18 Posts 4 Posters 2.9k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D divaindie

    Understood .that I had tried already .then how I can attach this file in qrc ?

    ekkescornerE Offline
    ekkescornerE Offline
    ekkescorner
    Qt Champions 2016
    wrote on last edited by
    #6

    @divaindie simply add the file to a .qrc
    I'm providing per ex a JSON settings file this way:

    <RCC>
        <qresource prefix="/">
            <file>data-assets/cacheSettingsData.json</file>
        </qresource>
    </RCC>
    

    then in my app I'm checking if the file already exists in my appdata - if not I copy it

    ekke ... Qt Champion 2016 | 2024 ... mobile business apps
    5.15 --> 6.9 https://t1p.de/ekkeChecklist
    QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

    D 1 Reply Last reply
    0
    • ekkescornerE ekkescorner

      @divaindie simply add the file to a .qrc
      I'm providing per ex a JSON settings file this way:

      <RCC>
          <qresource prefix="/">
              <file>data-assets/cacheSettingsData.json</file>
          </qresource>
      </RCC>
      

      then in my app I'm checking if the file already exists in my appdata - if not I copy it

      D Offline
      D Offline
      divaindie
      wrote on last edited by divaindie
      #7

      @ekkescorner I don't know about JSON file .but adding a database file in qrc doesn't work .you can see this link https://stackoverflow.com/questions/4254250/embedded-database-in-qt

      D 1 Reply Last reply
      0
      • D divaindie

        @ekkescorner I don't know about JSON file .but adding a database file in qrc doesn't work .you can see this link https://stackoverflow.com/questions/4254250/embedded-database-in-qt

        D Offline
        D Offline
        divaindie
        wrote on last edited by divaindie
        #8

        @divaindie basically we can add only binary files into qrc. during compilation of Qt application ,qmake will create a file called qrc_application.cpp file from .qrc file .
        .this qrc_application.cpp will have pointers to binary dump of resources which are added into .qrc file before building .This link will explain more about qrc system in Qt http://doc.qt.io/qt-5/resources.html
        suppose if we include a database file(which is not a binary file) into .qrc ,it will not work because "The database name is just the path to the file. Qt does not intercept the file name but hands it over directly to the SQLite functions (by calling toUtf8() on the “path”), which in turn try to open that file – and will eventually fail, of course."
        You can find this in below qt forum thread
        https://forum.qt.io/topic/3949/sqlite-database-in-project/3

        This is the reason why I found in-memory database is the solution to my problem .If you see this link you will get why I had choosen in-memory database
        https://stackoverflow.com/questions/4254250/embedded-database-in-qt
        But I don't know how to do it .If you have the solution /or any alternative solution let me know

        ekkescornerE 1 Reply Last reply
        0
        • D divaindie

          @divaindie basically we can add only binary files into qrc. during compilation of Qt application ,qmake will create a file called qrc_application.cpp file from .qrc file .
          .this qrc_application.cpp will have pointers to binary dump of resources which are added into .qrc file before building .This link will explain more about qrc system in Qt http://doc.qt.io/qt-5/resources.html
          suppose if we include a database file(which is not a binary file) into .qrc ,it will not work because "The database name is just the path to the file. Qt does not intercept the file name but hands it over directly to the SQLite functions (by calling toUtf8() on the “path”), which in turn try to open that file – and will eventually fail, of course."
          You can find this in below qt forum thread
          https://forum.qt.io/topic/3949/sqlite-database-in-project/3

          This is the reason why I found in-memory database is the solution to my problem .If you see this link you will get why I had choosen in-memory database
          https://stackoverflow.com/questions/4254250/embedded-database-in-qt
          But I don't know how to do it .If you have the solution /or any alternative solution let me know

          ekkescornerE Offline
          ekkescornerE Offline
          ekkescorner
          Qt Champions 2016
          wrote on last edited by ekkescorner
          #9

          @divaindie have you tried it this way ? https://stackoverflow.com/a/40713888/135559

          or this: https://forum.qt.io/topic/94088/deploy-sqlite-database-with-apk/12

          ekke ... Qt Champion 2016 | 2024 ... mobile business apps
          5.15 --> 6.9 https://t1p.de/ekkeChecklist
          QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

          D 1 Reply Last reply
          0
          • ekkescornerE ekkescorner

            @divaindie have you tried it this way ? https://stackoverflow.com/a/40713888/135559

            or this: https://forum.qt.io/topic/94088/deploy-sqlite-database-with-apk/12

            D Offline
            D Offline
            divaindie
            wrote on last edited by divaindie
            #10

            @ekkescorner i tried the link https://forum.qt.io/topic/94088/deploy-sqlite-database-with-apk/12

            but i got below error message while copying db file to a writable location ( i.e QStandardPaths::writableLocation(QStandardPaths::StandardLocation::AppDataLocation); )

            W QtMainThread: type=1400 audit(0.0:119): avc: denied { link } for name="qt_temp.xajbeT" dev="dm-0" ino=124288 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file permissive=0

            edit1 : it works if i use "QStandardPaths::GenericDataLocation" instead of "QStandardPaths::StandardLocation::AppDataLocation".
            now my question is which location i should prefer using to copy my database file from assets:/ folder ? .(FYI both read/write opearion allowed on database file)

            ekkescornerE 1 Reply Last reply
            0
            • D divaindie

              @ekkescorner i tried the link https://forum.qt.io/topic/94088/deploy-sqlite-database-with-apk/12

              but i got below error message while copying db file to a writable location ( i.e QStandardPaths::writableLocation(QStandardPaths::StandardLocation::AppDataLocation); )

              W QtMainThread: type=1400 audit(0.0:119): avc: denied { link } for name="qt_temp.xajbeT" dev="dm-0" ino=124288 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file permissive=0

              edit1 : it works if i use "QStandardPaths::GenericDataLocation" instead of "QStandardPaths::StandardLocation::AppDataLocation".
              now my question is which location i should prefer using to copy my database file from assets:/ folder ? .(FYI both read/write opearion allowed on database file)

              ekkescornerE Offline
              ekkescornerE Offline
              ekkescorner
              Qt Champions 2016
              wrote on last edited by
              #11

              @divaindie what's your Qt version ?
              there were issues with temp files causing errors while copying on Android
              5.10.1 and 5.11.1 should be ok

              ekke ... Qt Champion 2016 | 2024 ... mobile business apps
              5.15 --> 6.9 https://t1p.de/ekkeChecklist
              QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

              D 1 Reply Last reply
              0
              • ekkescornerE ekkescorner

                @divaindie what's your Qt version ?
                there were issues with temp files causing errors while copying on Android
                5.10.1 and 5.11.1 should be ok

                D Offline
                D Offline
                divaindie
                wrote on last edited by
                #12

                @ekkescorner iam using 5.10.1 !!! .which version of Qt works fine for developing Android applications?

                ekkescornerE 1 Reply Last reply
                0
                • D divaindie

                  @ekkescorner iam using 5.10.1 !!! .which version of Qt works fine for developing Android applications?

                  ekkescornerE Offline
                  ekkescornerE Offline
                  ekkescorner
                  Qt Champions 2016
                  wrote on last edited by
                  #13

                  @divaindie 5.10.1 should be fine.
                  can you create, save and copy a normal text file at your AppDataLocation ?

                  ekke ... Qt Champion 2016 | 2024 ... mobile business apps
                  5.15 --> 6.9 https://t1p.de/ekkeChecklist
                  QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

                  1 Reply Last reply
                  0
                  • D Offline
                    D Offline
                    divaindie
                    wrote on last edited by divaindie
                    #14

                    @ekkescorner Iam able to create files.but i cant read/write/copy files to AppDataLocation

                    ekkescornerE 1 Reply Last reply
                    0
                    • D divaindie

                      @ekkescorner Iam able to create files.but i cant read/write/copy files to AppDataLocation

                      ekkescornerE Offline
                      ekkescornerE Offline
                      ekkescorner
                      Qt Champions 2016
                      wrote on last edited by
                      #15

                      @divaindie curios.
                      I'm using this to get the appdata location

                      mDataRoot = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).value(0);
                      

                      then I'm checking if the directory exists, but this should exists on Android, but must be created on iOS
                      to be safe I'm always checking

                      QDir myDir;
                          bool exists;
                          exists = myDir.exists(mDataRoot);
                          if (!exists) {
                              bool ok = myDir.mkpath(mDataRoot);
                              if(!ok) {
                                  qWarning() << "Couldn't create mDataRoot " << mDataRoot;
                                  return false;
                              }
                              qDebug() << "created directory mDataRoot " << mDataRoot;
                          }
                      

                      then as next I'm creating a /data/ directory and place all my other files ond folders inside this
                      never had problems with read write delete copy

                      ekke ... Qt Champion 2016 | 2024 ... mobile business apps
                      5.15 --> 6.9 https://t1p.de/ekkeChecklist
                      QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

                      D 1 Reply Last reply
                      1
                      • ekkescornerE ekkescorner

                        @divaindie curios.
                        I'm using this to get the appdata location

                        mDataRoot = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).value(0);
                        

                        then I'm checking if the directory exists, but this should exists on Android, but must be created on iOS
                        to be safe I'm always checking

                        QDir myDir;
                            bool exists;
                            exists = myDir.exists(mDataRoot);
                            if (!exists) {
                                bool ok = myDir.mkpath(mDataRoot);
                                if(!ok) {
                                    qWarning() << "Couldn't create mDataRoot " << mDataRoot;
                                    return false;
                                }
                                qDebug() << "created directory mDataRoot " << mDataRoot;
                            }
                        

                        then as next I'm creating a /data/ directory and place all my other files ond folders inside this
                        never had problems with read write delete copy

                        D Offline
                        D Offline
                        divaindie
                        wrote on last edited by divaindie
                        #16

                        @ekkescorner this worked for me.thanks!!.
                        for linux & windows if i want to add my database file what changes i need to make in .pro file ?.
                        for android i made below changes.
                        android
                        {
                        my_files.path = /assets
                        my_files.files = $$PWD/android/*
                        INSTALLS += my_files
                        }

                        ekkescornerE Pablo J. RoginaP 2 Replies Last reply
                        0
                        • D divaindie

                          @ekkescorner this worked for me.thanks!!.
                          for linux & windows if i want to add my database file what changes i need to make in .pro file ?.
                          for android i made below changes.
                          android
                          {
                          my_files.path = /assets
                          my_files.files = $$PWD/android/*
                          INSTALLS += my_files
                          }

                          ekkescornerE Offline
                          ekkescornerE Offline
                          ekkescorner
                          Qt Champions 2016
                          wrote on last edited by ekkescorner
                          #17

                          @divaindie good to hear that it's working for you

                          ekke ... Qt Champion 2016 | 2024 ... mobile business apps
                          5.15 --> 6.9 https://t1p.de/ekkeChecklist
                          QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

                          1 Reply Last reply
                          0
                          • D divaindie

                            @ekkescorner this worked for me.thanks!!.
                            for linux & windows if i want to add my database file what changes i need to make in .pro file ?.
                            for android i made below changes.
                            android
                            {
                            my_files.path = /assets
                            my_files.files = $$PWD/android/*
                            INSTALLS += my_files
                            }

                            Pablo J. RoginaP Offline
                            Pablo J. RoginaP Offline
                            Pablo J. Rogina
                            wrote on last edited by
                            #18

                            @divaindie said in Qt Mobile Application for Android:

                            for linux & windows if i want to add my database file what changes i need to make in .pro file ?

                            Maybe it'd be good you mark this post as solved since you originally asked for Android and it's working for you now, and open a new post for the other platforms so not to hijack the post. Thanks.

                            Upvote the answer(s) that helped you solve the issue
                            Use "Topic Tools" button to mark your post as Solved
                            Add screenshots via postimage.org
                            Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

                            1 Reply Last reply
                            0

                            • Login

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved