Qt 打开安卓相冊选择图片并获取图片的本地路径
过程例如以下:
通过
Intent
打开安卓的系统相冊。推荐使用
QAndroidJniObject::getStaticObjectField
获取静态字段。QAndroidJniObject action = QAndroidJniObject::getStaticObjectField( "android/content/Intent", "ACTION_GET_CONTENT", "Ljava/lang/String;");
用户在系统相冊选择到一个图片后,在
C++
代码中获取到图片的content
地址。通过查询得出图片的本地路径。
Uri uri = data.getData(); String[] proj = { MediaStore.Images.Media.DATA }; Cursor actualimagecursor = managedQuery(uri,proj,null,null,null); int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); actualimagecursor.moveToFirst(); String img_path = actualimagecursor.getString(actual_image_column_index); File file = new File(img_path);
将上诉的 Java 代码转成 C++ 代码。
參考 Qt and Android Gallery - MediaStore using QAndroidJniObject。
样例下载CallNativeGallery,你也能够选择 fork 这个项目。
參考资料:
Qt and Android Gallery - MediaStore using QAndroidJniObject
HOW TO OPEN ANDROID IMAGE GALLERY IN QT
Thread: Converting QAndroidJniObject to jobjectArray: most elements are NULL!
How to return an array from JNI to Java?