diff --git a/mobile/android/src/OpenFileActivity.java b/mobile/android/src/OpenFileActivity.java --- a/mobile/android/src/OpenFileActivity.java +++ b/mobile/android/src/OpenFileActivity.java @@ -40,9 +40,7 @@ FileClass.openUri(uri.toString()); } - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + public void handleViewIntent() { final Intent bundleIntent = getIntent(); if (bundleIntent == null) return; diff --git a/mobile/app/android.h b/mobile/app/android.h --- a/mobile/app/android.h +++ b/mobile/app/android.h @@ -30,16 +30,17 @@ } QString m_lastUrl; + static URIHandler handler; }; -static URIHandler handler; - class AndroidInstance : public QObject { Q_OBJECT public: Q_SCRIPTABLE void openFile(const QString &title, const QStringList &mimes); + static void handleViewIntent(); + Q_SIGNALS: void openUri(const QUrl &uri); }; diff --git a/mobile/app/android.cpp b/mobile/app/android.cpp --- a/mobile/app/android.cpp +++ b/mobile/app/android.cpp @@ -17,11 +17,13 @@ *************************************************************************************/ #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) @@ -44,6 +46,11 @@ } } +void AndroidInstance::handleViewIntent() +{ + QtAndroid::androidActivity().callMethod("handleViewIntent", "()V"); +} + void Java_org_kde_something_FileClass_openUri(JNIEnv *env, jobject /*obj*/, jstring uri) @@ -54,7 +61,7 @@ if (s_instance) s_instance->openUri(QUrl(uriString)); else - handler.openUri(uriString); + URIHandler::handler.openUri(uriString); env->ReleaseStringUTFChars(uri, utf); } diff --git a/mobile/app/main.cpp b/mobile/app/main.cpp --- a/mobile/app/main.cpp +++ b/mobile/app/main.cpp @@ -49,8 +49,9 @@ QQmlApplicationEngine engine; #ifdef __ANDROID__ + AndroidInstance::handleViewIntent(); qmlRegisterSingletonType("org.kde.okular.app", 2, 0, "AndroidInstance", [](QQmlEngine*, QJSEngine*) -> QObject* { return new AndroidInstance; }); - const QString uri = handler.m_lastUrl; + const QString uri = URIHandler::handler.m_lastUrl; #else qmlRegisterSingletonType("org.kde.okular.app", 2, 0, "AndroidInstance", [](QQmlEngine*, QJSEngine*) -> QObject* { return new QObject; }); const QString uri = parser.positionalArguments().count() == 1