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. Permission error while creating lock file
Forum Updated to NodeBB v4.3 + New Features

Permission error while creating lock file

Scheduled Pinned Locked Moved Solved Mobile and Embedded
17 Posts 5 Posters 2.3k Views 1 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.
  • A angelatyizhong

    my qt version is 5.9.the android must be rooted?

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #6

    @angelatyizhong

    it seems so
    https://bugreports.qt.io/browse/QTBUG-32672

    1 Reply Last reply
    0
    • A Offline
      A Offline
      angelatyizhong
      wrote on last edited by
      #7

      how can i read and write /var ,/etc ,/tmp and others files without root the android.

      jsulmJ 1 Reply Last reply
      0
      • A angelatyizhong

        how can i read and write /var ,/etc ,/tmp and others files without root the android.

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #8

        @angelatyizhong said in Permission error while creating lock file:

        how can i read and write /var ,/etc ,/tmp and others files without root the android

        You can't write there on Android without rooting the device, that's what @mrjj said.

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        2
        • A Offline
          A Offline
          angelatyizhong
          wrote on last edited by
          #9

          other serial app can work OK without root the android.How should i set the QT app to make it OK without root the android.

          J.HilkJ 1 Reply Last reply
          0
          • A angelatyizhong

            other serial app can work OK without root the android.How should i set the QT app to make it OK without root the android.

            J.HilkJ Offline
            J.HilkJ Offline
            J.Hilk
            Moderators
            wrote on last edited by
            #10

            @angelatyizhong something has to have root access, if not your application, than a driver, or the driver has to be baked in the OS, highly unlikely for non rooted Android devices.

            Only alternative is talking via the android USB api to your device. Thats going to take time to write and I'm not convinced it will work correctly in the first place.


            Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


            Q: What's that?
            A: It's blue light.
            Q: What does it do?
            A: It turns blue.

            1 Reply Last reply
            1
            • A Offline
              A Offline
              angelatyizhong
              wrote on last edited by
              #11

              i find one source code witch can work ok without root the android.can i do with QT like this?how can i do?/
              /检查访问权限,如果没有读写权限,进行文件操作,修改文件访问权限
              if (!device.canRead() || !device.canWrite()) {
              try {
              //通过挂载到linux的方式,修改文件的操作权限
              Process su = Runtime.getRuntime().exec("/system/xbin/su");
              String cmd = "chmod 777 " + device.getAbsolutePath() + "\n" + "exit\n";
              su.getOutputStream().write(cmd.getBytes());

                          if ((su.waitFor() != 0) || !device.canRead() || !device.canWrite()) {
                              throw new SecurityException();
                          }
                      } catch (Exception e) {
                          e.printStackTrace();
                          throw new SecurityException();
                      }
              
              jsulmJ J.HilkJ 2 Replies Last reply
              0
              • A angelatyizhong

                i find one source code witch can work ok without root the android.can i do with QT like this?how can i do?/
                /检查访问权限,如果没有读写权限,进行文件操作,修改文件访问权限
                if (!device.canRead() || !device.canWrite()) {
                try {
                //通过挂载到linux的方式,修改文件的操作权限
                Process su = Runtime.getRuntime().exec("/system/xbin/su");
                String cmd = "chmod 777 " + device.getAbsolutePath() + "\n" + "exit\n";
                su.getOutputStream().write(cmd.getBytes());

                            if ((su.waitFor() != 0) || !device.canRead() || !device.canWrite()) {
                                throw new SecurityException();
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                            throw new SecurityException();
                        }
                
                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #12

                @angelatyizhong I really doubt su works on a non-rooted Android. See https://android.stackexchange.com/questions/207623/what-special-privileges-system-xbin-su-does-have-w-r-t-root-access

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                1 Reply Last reply
                1
                • A angelatyizhong

                  i find one source code witch can work ok without root the android.can i do with QT like this?how can i do?/
                  /检查访问权限,如果没有读写权限,进行文件操作,修改文件访问权限
                  if (!device.canRead() || !device.canWrite()) {
                  try {
                  //通过挂载到linux的方式,修改文件的操作权限
                  Process su = Runtime.getRuntime().exec("/system/xbin/su");
                  String cmd = "chmod 777 " + device.getAbsolutePath() + "\n" + "exit\n";
                  su.getOutputStream().write(cmd.getBytes());

                              if ((su.waitFor() != 0) || !device.canRead() || !device.canWrite()) {
                                  throw new SecurityException();
                              }
                          } catch (Exception e) {
                              e.printStackTrace();
                              throw new SecurityException();
                          }
                  
                  J.HilkJ Offline
                  J.HilkJ Offline
                  J.Hilk
                  Moderators
                  wrote on last edited by
                  #13

                  @angelatyizhong said in Permission error while creating lock file:

                  /system/xbin/su

                  take your time and read this answer, it's very detailed and good
                  https://android.stackexchange.com/a/207902

                  TLDR:
                  Debug only


                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                  Q: What's that?
                  A: It's blue light.
                  Q: What does it do?
                  A: It turns blue.

                  1 Reply Last reply
                  1
                  • K Offline
                    K Offline
                    kuzulis
                    Qt Champions 2020
                    wrote on last edited by kuzulis
                    #14

                    BTW: QSerialPort officially does not support on Android. You even has not rights to open the device there (without of a root rights). One exception when it is possible - it if yours is an Android BSP developer and provides your Android devices with the pre-configured kernel and other stuff.

                    1 Reply Last reply
                    1
                    • A Offline
                      A Offline
                      angelatyizhong
                      wrote on last edited by
                      #15

                      my android is rooted ,how can i send chmod order?

                      jsulmJ 1 Reply Last reply
                      0
                      • A angelatyizhong

                        my android is rooted ,how can i send chmod order?

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #16

                        @angelatyizhong said in Permission error while creating lock file:

                        how can i send chmod order?

                        Do you mean from your app? Using QProcess.

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 Reply Last reply
                        2
                        • K Offline
                          K Offline
                          kuzulis
                          Qt Champions 2020
                          wrote on last edited by kuzulis
                          #17

                          It is strange why the lock-file creation fails for you. Because the source code of QSP is the following:

                              static const QStringList lockDirectoryPaths = QStringList()
                                  << QStringLiteral("/var/lock")
                                  << QStringLiteral("/etc/locks")
                                  << QStringLiteral("/var/spool/locks")
                                  << QStringLiteral("/var/spool/uucp")
                                  << QStringLiteral("/tmp")
                                  << QStringLiteral("/var/tmp")
                                  << QStringLiteral("/var/lock/lockdev")
                                  << QStringLiteral("/run/lock")
                          #ifdef Q_OS_ANDROID
                                  << QStringLiteral("/data/local/tmp")
                          #endif
                                  << QStandardPaths::writableLocation(QStandardPaths::TempLocation);
                          

                          So, even "/data/local/tmp" or "QStandardPaths::TempLocation" does not work? If so, maybe you need to configure and the Android permissions, using a Manifest file? I meant the permissions to the temporary directories...

                          Anyway, you can try to find a writable temporary directory himself (just do separate non-QSP related tests), and then I can add your new solution to the QSP.

                          1 Reply Last reply
                          2

                          • Login

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