Blind port android. Thanks Volker

This commit is contained in:
Sune Vuorela 2023-12-12 15:32:12 +01:00 committed by Carl Schwan
parent 1bdd1fa7e2
commit fee0380fab
2 changed files with 17 additions and 17 deletions

View file

@ -5,11 +5,11 @@
*/ */
#include "android.h" #include "android.h"
#include <QAndroidJniEnvironment> #include <QCoreApplication>
#include <QAndroidJniObject>
#include <QDebug> #include <QDebug>
#include <QJniEnvironment>
#include <QJniObject>
#include <QStringList> #include <QStringList>
#include <QtAndroid>
URIHandler URIHandler::handler; URIHandler URIHandler::handler;
static AndroidInstance *s_instance = nullptr; static AndroidInstance *s_instance = nullptr;
@ -17,25 +17,24 @@ static AndroidInstance *s_instance = nullptr;
void AndroidInstance::openFile(const QString &title, const QStringList &mimes) void AndroidInstance::openFile(const QString &title, const QStringList &mimes)
{ {
s_instance = this; s_instance = this;
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); // activity is valid QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); // activity is valid
Q_ASSERT(activity.isValid()); Q_ASSERT(activity.isValid());
QAndroidJniEnvironment _env; QJniEnvironment _env;
QAndroidJniObject::callStaticMethod<void>("org/kde/something/OpenFileActivity", QJniObject::callStaticMethod<void>("org/kde/something/OpenFileActivity",
"openFile", "openFile",
"(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;)V", "(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;)V",
activity.object<jobject>(), activity.object<jobject>(),
QAndroidJniObject::fromString(title).object<jstring>(), QJniObject::fromString(title).object<jstring>(),
QAndroidJniObject::fromString(mimes.join(QLatin1Char(';'))).object<jstring>()); QJniObject::fromString(mimes.join(QLatin1Char(';'))).object<jstring>());
if (_env->ExceptionCheck()) { if (_env.checkAndClearExceptions()) {
_env->ExceptionClear();
qWarning() << "couldn't launch intent"; qWarning() << "couldn't launch intent";
} }
} }
void AndroidInstance::handleViewIntent() void AndroidInstance::handleViewIntent()
{ {
QtAndroid::androidActivity().callMethod<void>("handleViewIntent", "()V"); QJniObject(QNativeInterface::QAndroidApplication::context()).callMethod<void>("handleViewIntent", "()V");
} }
void Java_org_kde_something_FileClass_openUri(JNIEnv *env, jobject /*obj*/, jstring uri) void Java_org_kde_something_FileClass_openUri(JNIEnv *env, jobject /*obj*/, jstring uri)

View file

@ -10,8 +10,8 @@
#include <QQmlEngine> #include <QQmlEngine>
#ifdef Q_OS_ANDROID #ifdef Q_OS_ANDROID
#include <QAndroidJniObject> #include <QCoreApplication>
#include <QtAndroid> #include <QJniObject>
#endif #endif
#include <core/bookmarkmanager.h> #include <core/bookmarkmanager.h>
@ -61,7 +61,8 @@ void DocumentItem::openUrl(const QUrl &url, const QString &password)
QUrl realUrl = url; // NOLINT(performance-unnecessary-copy-initialization) because of the ifdef below this can't be const & QUrl realUrl = url; // NOLINT(performance-unnecessary-copy-initialization) because of the ifdef below this can't be const &
#ifdef Q_OS_ANDROID #ifdef Q_OS_ANDROID
realUrl = QUrl(QtAndroid::androidActivity().callObjectMethod("contentUrlToFd", "(Ljava/lang/String;)Ljava/lang/String;", QAndroidJniObject::fromString(url.toString(QUrl::FullyEncoded)).object<jstring>()).toString()); realUrl =
QUrl(QJniObject(QNativeInterface::QAndroidApplication::context()).callObjectMethod("contentUrlToFd", "(Ljava/lang/String;)Ljava/lang/String;", QJniObject::fromString(url.toString(QUrl::FullyEncoded)).object<jstring>()).toString());
#endif #endif
const QString path = realUrl.isLocalFile() ? realUrl.toLocalFile() : QStringLiteral("-"); const QString path = realUrl.isLocalFile() ? realUrl.toLocalFile() : QStringLiteral("-");