Russian Qt Forum

Qt => Qt Embedded => Тема начата: vav2001 от Август 25, 2017, 09:56



Название: QAndroidActivityResultReceiver получить ссылку на файл
Отправлено: vav2001 от Август 25, 2017, 09:56
Из QT под андроид вызываю галерею и выбираю файл. Цель получить ссылку на выбранный файл.

1) Вызываю галлерею
Код:
 QAndroidJniObject action = QAndroidJniObject::fromString( "android.intent.action.PICK");
 QAndroidJniObject intent( "android/content/Intent");
 intent.callObjectMethod( "setAction", "(Ljava/lang/String;)Landroid/content/Intent;", action.object<jstring>());
 intent.callObjectMethod( "setType", "(Ljava/lang/String;)Landroid/content/Intent;", QAndroidJniObject::fromString("image/*").object<jstring>());
 QtAndroid::startActivity( intent.object<jobject>(), 101,this);

2) Обрабатываю ответ выбора
Код:
virtual void handleActivityResult(int receiverRequestCode, int resultCode, const QAndroidJniObject & data) override {
        jint RESULT_OK = QAndroidJniObject::getStaticField<jint>("android/app/Activity", "RESULT_OK");
        if (receiverRequestCode == 101 && resultCode == RESULT_OK) {
            QAndroidJniObject activity = QtAndroid::androidActivity();
            QAndroidJniObject videoUri = data.callObjectMethod(
                                "getData",
                                "()Landroid/net/Uri;");
            jstring string = videoUri.object<jstring>(); //ТУТ ПОНИМАЮ ЧТО РЕЗУЛЬТАТ НЕ ТОТ ! - цифровое значение
        }
}

Подскажите как из параметра const QAndroidJniObject & data корректно вытащить путь к файлу ?


Название: Re: QAndroidActivityResultReceiver получить ссылку на файл
Отправлено: vav2001 от Август 25, 2017, 15:41
Код:
const QString fileURI = data.callObjectMethod("getData","()Landroid/net/Uri;").toString();
Вот этот код работает но возвращает URI ссылку. Как преобразовать ее к реальному пути средствами JNI ?
или
по второму варианту написать класс на яве и обращаться к нему, но тут непонятно где и как размещать написанный класс конвертации ...