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. Access image captured by Camera app through JNI
Qt 6.12 LTS is out! See what's new in the release blog

Access image captured by Camera app through JNI

Scheduled Pinned Locked Moved Solved Mobile and Embedded
2 Posts 1 Posters 1.1k 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 Offline
    A Offline
    algogr
    wrote on last edited by
    #1

    Hello,

    I am trying to access an image that i want to capture through Android camera app and save it to a file,from my app. The camera activity starts, but after pressing the button to capture the image, it returns back to my app without saving any file. This is my code

     QAndroidJniObject ACTION_SET_TIMER = QAndroidJniObject::getStaticObjectField("android/provider/MediaStore","ACTION_IMAGE_CAPTURE", "Ljava/lang/String;");
               QAndroidJniObject intent("android/content/Intent","(Ljava/lang/String;)V",ACTION_SET_TIMER.object());
                QAndroidJniObject filename=QAndroidJniObject::fromString("/mnt/sdcard/1.jpg");
               QAndroidJniObject file("java/io/File","(Ljava/lang/String;)V",filename.object<jstring>());
               QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod("android/net/Uri","fromFile", "(Ljava/io/File;)Landroid/net/Uri;", file.object());
               
                        QAndroidJniObject uristr=uri.callObjectMethod("toString", "()Ljava/lang/String;");
               
                         QAndroidJniObject key=QAndroidJniObject::fromString("MediaStoreEXTRA_OUTPUT");
    
               intent.callObjectMethod("putExtra","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",key.object(), uristr.object());
    
               QAndroidJniObject activity = QtAndroid::androidActivity();
    
               QAndroidJniObject packageManager = activity.callObjectMethod("getPackageManager","()Landroid/content/pm/PackageManager;");
               QAndroidJniObject componentName = intent.callObjectMethod("resolveActivity","(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName;",packageManager.object());
               if (componentName.isValid()) {
                   
                   QtAndroid::startActivity(intent, 42);
               } else {
                   qWarning() << "Unable to resolve activity";
               }
    

    Can anybody tell me what i am doing wrong?
    Thank you in advance

    1 Reply Last reply
    0
    • A Offline
      A Offline
      algogr
      wrote on last edited by
      #2

      For anybody who may be interested i found the solution,thanks to this

      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
      • Unsolved