Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Android auto update
Qt 6.12 LTS is out! See what's new in the release blog

Android auto update

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
13 Posts 5 Posters 3.8k 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.
  • KutyusK Kutyus

    @sierdzio
    Thanks for the reply, it's a little complicated for me, I absolutely don't understand the java, maybe I'll try it later.

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

    @Kutyus my share example has implemented Android FileProvider https://github.com/ekke/ekkesSHAREexample

    ekke ... Qt Champion 2016 | 2024 ... mobile business apps

    K 1 Reply Last reply
    2
    • ekkescornerE ekkescorner

      @Kutyus my share example has implemented Android FileProvider https://github.com/ekke/ekkesSHAREexample

      K Offline
      K Offline
      koahnig
      wrote on last edited by
      #5

      @ekkescorner said in Android auto update:

      @Kutyus my share example has implemented Android FileProvider https://github.com/ekke/ekkesSHAREexample

      Great example.
      Got it to work immediately with Qt5.12.7, but failure with Qt5.14.2.
      Are you interested to get a bug report? And when where?

      Vote the answer(s) that helped you to solve your issue(s)

      ekkescornerE 1 Reply Last reply
      0
      • K koahnig

        @ekkescorner said in Android auto update:

        @Kutyus my share example has implemented Android FileProvider https://github.com/ekke/ekkesSHAREexample

        Great example.
        Got it to work immediately with Qt5.12.7, but failure with Qt5.14.2.
        Are you interested to get a bug report? And when where?

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

        @koahnig said in Android auto update:

        Got it to work immediately with Qt5.12.7, but failure with Qt5.14.2.
        Are you interested to get a bug report? And when where?

        please report at gihub issues https://github.com/ekke/ekkesSHAREexample/issues

        unfortunately most of my examples are 3 years or more old and last 2 years I had to develop so many mobile business apps, so I didn't found enough spare time

        the good thing: starting with Qt 5.15 I'll rework all my examples and blogs to get mobile apps ready for Qt6 / strict QML 3. will reduce work for customers next months and concentrate on 5.15 / 6.0. with some luck all of this will finally end in a book (fingers crossed)

        ekke ... Qt Champion 2016 | 2024 ... mobile business apps

        K 1 Reply Last reply
        3
        • ekkescornerE ekkescorner

          @koahnig said in Android auto update:

          Got it to work immediately with Qt5.12.7, but failure with Qt5.14.2.
          Are you interested to get a bug report? And when where?

          please report at gihub issues https://github.com/ekke/ekkesSHAREexample/issues

          unfortunately most of my examples are 3 years or more old and last 2 years I had to develop so many mobile business apps, so I didn't found enough spare time

          the good thing: starting with Qt 5.15 I'll rework all my examples and blogs to get mobile apps ready for Qt6 / strict QML 3. will reduce work for customers next months and concentrate on 5.15 / 6.0. with some luck all of this will finally end in a book (fingers crossed)

          K Offline
          K Offline
          koahnig
          wrote on last edited by
          #7

          @ekkescorner

          Thanks. Report created

          Vote the answer(s) that helped you to solve your issue(s)

          ekkescornerE 1 Reply Last reply
          0
          • K koahnig

            @ekkescorner

            Thanks. Report created

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

            @koahnig thx reporting. will test when I've done my switch from 5.13 --> 5.15

            ekke ... Qt Champion 2016 | 2024 ... mobile business apps

            1 Reply Last reply
            1
            • sierdzioS sierdzio

              You need to process the URI through FileProvider. It's an awfully awkward and tedious thing, but Android requires it since version 6 IIRC.

              Basically you need to:

              1. Add file provider to res/xml/fileprovider.xml. Example contents:
              <?xml version="1.0" encoding="utf-8"?>
              <paths>
                  <cache-path name="exports" path="." />
                  <!--Uncomment below to share the entire application specific directory -->
                  <!--<external-path name="all_dirs" path="."/>-->
              </paths>
              
              1. Register that provider in your manifest:
              <provider
                  android:name="android.support.v4.content.FileProvider"
                  android:authorities="your.application.domain.fileprovider"
                  android:exported="false"
                  android:grantUriPermissions="true">
                    <meta-data
                          android:name="android.support.FILE_PROVIDER_PATHS"
                          android:resource="@xml/fileprovider" />
                  </provider>
              
              1. In every place in Java you need to use the file provider to "access" that file, instead of regular File/ Intent. I don't have Qt code for this, only some Java (and written for different purpose so it might be incorrect for your case):
              import android.support.v4.content.FileProvider;
              // ...
              Uri providerUri = FileProvider.getUriForFile(
                              this,
                              "your.application.domain.fileprovider",
                              fileName);
              

              You probably need to do the opposite (get file for URI). Not sure. I wrote this ages ago and APIs in Android keep changing all the time :-(

              1. You may also need to add the v4 compat library in gradle config, I'm not sure. It could be something like this:
              dependencies {
                  implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
                  compile 'com.android.support:support-v4:23.+'
              }
              

              I hope this will help you at least a bit. And sorry for not being more specific, I'm not sure about any of it :D This won't be easy, good luck!

              KutyusK Offline
              KutyusK Offline
              Kutyus
              wrote on last edited by
              #9

              @sierdzio
              Hi!
              I made the settings, but on this line, there is always an error:

              QAndroidJniObject uri       = QAndroidJniObject::callStaticObjectMethod("android.support.v4.content.FileProvider", "FileProvider.getUriForFile", "(Landroid/content/Context;Ljava/lang/String;Ljava.io.File;)Landroid/net/Uri;", activity.object(), authority.object(), file.object());
              
              
              System.err: java.lang.NoSuchMethodError: no static method "Landroid/support/v4/content/FileProvider;.FileProvider.getUriForFile(Landroid/content/Context;Ljava/lang/String;Ljava.io.File;)Landroid/net/Uri;"
              

              I also tried the getUriForFile method without the FileProvider prefix, the same error anyway.

              KroMignonK 1 Reply Last reply
              0
              • sierdzioS Offline
                sierdzioS Offline
                sierdzio
                Moderators
                wrote on last edited by
                #10

                I don't know JNI enough to answer, for me it's always a bunch of trial and error to get it to work :D

                (Z(:^

                1 Reply Last reply
                0
                • KutyusK Kutyus

                  @sierdzio
                  Hi!
                  I made the settings, but on this line, there is always an error:

                  QAndroidJniObject uri       = QAndroidJniObject::callStaticObjectMethod("android.support.v4.content.FileProvider", "FileProvider.getUriForFile", "(Landroid/content/Context;Ljava/lang/String;Ljava.io.File;)Landroid/net/Uri;", activity.object(), authority.object(), file.object());
                  
                  
                  System.err: java.lang.NoSuchMethodError: no static method "Landroid/support/v4/content/FileProvider;.FileProvider.getUriForFile(Landroid/content/Context;Ljava/lang/String;Ljava.io.File;)Landroid/net/Uri;"
                  

                  I also tried the getUriForFile method without the FileProvider prefix, the same error anyway.

                  KroMignonK Offline
                  KroMignonK Offline
                  KroMignon
                  wrote on last edited by KroMignon
                  #11

                  @Kutyus Your JNI call is not correct, you pass wrong method name!
                  It should be:

                  QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod(
                          "android.support.v4.content.FileProvider", 
                          "getUriForFile",  // only the function name!!
                          "(Landroid/content/Context;Ljava/lang/String;Ljava.io.File;)Landroid/net/Uri;",
                          activity.object(), 
                          authority.object(), 
                          file.object());
                  
                  

                  It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                  KutyusK 1 Reply Last reply
                  0
                  • KroMignonK KroMignon

                    @Kutyus Your JNI call is not correct, you pass wrong method name!
                    It should be:

                    QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod(
                            "android.support.v4.content.FileProvider", 
                            "getUriForFile",  // only the function name!!
                            "(Landroid/content/Context;Ljava/lang/String;Ljava.io.File;)Landroid/net/Uri;",
                            activity.object(), 
                            authority.object(), 
                            file.object());
                    
                    
                    KutyusK Offline
                    KutyusK Offline
                    Kutyus
                    wrote on last edited by
                    #12

                    @KroMignon said in Android auto update:
                    I tried anyway. The error in the second parameter was slashes instead of periods in the java.io.File section.
                    If I log out after the call, I get an error that there is no activity handling the intent, if I don't log out immediately, there is no error, but nothing happens. I don't know where the error might be.

                    KroMignonK 1 Reply Last reply
                    0
                    • KutyusK Kutyus

                      @KroMignon said in Android auto update:
                      I tried anyway. The error in the second parameter was slashes instead of periods in the java.io.File section.
                      If I log out after the call, I get an error that there is no activity handling the intent, if I don't log out immediately, there is no error, but nothing happens. I don't know where the error might be.

                      KroMignonK Offline
                      KroMignonK Offline
                      KroMignon
                      wrote on last edited by KroMignon
                      #13

                      @Kutyus You are right, there are many typos!

                      QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod(
                              "android/support/v4/content/FileProvider", 
                              "getUriForFile",  // only the function name!!
                              "(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;)Landroid/net/Uri;",
                              activity.object(), 
                              authority.object(), 
                              file.object());
                      

                      It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                      1 Reply Last reply
                      1

                      • Login

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