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 <QAndroidJniEnvironment>
#include <QAndroidJniObject>
#include <QCoreApplication>
#include <QDebug>
#include <QJniEnvironment>
#include <QJniObject>
#include <QStringList>
#include <QtAndroid>
URIHandler URIHandler::handler;
static AndroidInstance *s_instance = nullptr;
@ -17,25 +17,24 @@ 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
QJniObject activity = QJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); // activity is valid
Q_ASSERT(activity.isValid());
QAndroidJniEnvironment _env;
QAndroidJniObject::callStaticMethod<void>("org/kde/something/OpenFileActivity",
"openFile",
"(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;)V",
activity.object<jobject>(),
QAndroidJniObject::fromString(title).object<jstring>(),
QAndroidJniObject::fromString(mimes.join(QLatin1Char(';'))).object<jstring>());
if (_env->ExceptionCheck()) {
_env->ExceptionClear();
QJniEnvironment _env;
QJniObject::callStaticMethod<void>("org/kde/something/OpenFileActivity",
"openFile",
"(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;)V",
activity.object<jobject>(),
QJniObject::fromString(title).object<jstring>(),
QJniObject::fromString(mimes.join(QLatin1Char(';'))).object<jstring>());
if (_env.checkAndClearExceptions()) {
qWarning() << "couldn't launch intent";
}
}
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)

View File

@ -10,8 +10,8 @@
#include <QQmlEngine>
#ifdef Q_OS_ANDROID
#include <QAndroidJniObject>
#include <QtAndroid>
#include <QCoreApplication>
#include <QJniObject>
#endif
#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 &
#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
const QString path = realUrl.isLocalFile() ? realUrl.toLocalFile() : QStringLiteral("-");