/* SPDX-FileCopyrightText: 2018 Aleix Pol SPDX-License-Identifier: GPL-2.0-or-later */ #include "android.h" #include #include #include #include #include URIHandler URIHandler::handler; static AndroidInstance *s_instance = nullptr; void AndroidInstance::openFile(const QString &title, const QStringList &mimes) { s_instance = this; QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); // activity is valid Q_ASSERT(activity.isValid()); QAndroidJniEnvironment _env; QAndroidJniObject::callStaticMethod("org/kde/something/OpenFileActivity", "openFile", "(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;)V", activity.object(), QAndroidJniObject::fromString(title).object(), QAndroidJniObject::fromString(mimes.join(QLatin1Char(';'))).object()); if (_env->ExceptionCheck()) { _env->ExceptionClear(); qWarning() << "couldn't launch intent"; } } void AndroidInstance::handleViewIntent() { QtAndroid::androidActivity().callMethod("handleViewIntent", "()V"); } void Java_org_kde_something_FileClass_openUri(JNIEnv *env, jobject /*obj*/, jstring uri) { jboolean isCopy = false; const char *utf = env->GetStringUTFChars(uri, &isCopy); const QString uriString = QString::fromUtf8(utf); if (s_instance) s_instance->openUri(QUrl(uriString)); else URIHandler::handler.openUri(uriString); env->ReleaseStringUTFChars(uri, utf); }