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?