From 7f3af5c98a8ca037b74a9fc1cc48d35b7f11b6e0 Mon Sep 17 00:00:00 2001 From: mschiller890 Date: Wed, 11 Mar 2026 19:40:13 +0200 Subject: [PATCH] Implemented openURL for android and updated init logic --- src/AppPlatform_android.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/AppPlatform_android.h b/src/AppPlatform_android.h index fb2e10e..6ae271c 100755 --- a/src/AppPlatform_android.h +++ b/src/AppPlatform_android.h @@ -151,6 +151,8 @@ public: _methodGetPixelsPerMillimeter = env->GetMethodID( _activityClass, "getPixelsPerMillimeter", "()F"); _methodGetPlatformStringVar = env->GetMethodID( _activityClass, "getPlatformStringVar", "(I)Ljava/lang/String;"); + // custom helper to launch external URLs + _methodOpenURL = env->GetMethodID(_activityClass, "openURL", "(Ljava/lang/String;)V"); _classWindow = (jclass)env->NewGlobalRef(env->FindClass("android/view/Window")); _classContext = (jclass)env->NewGlobalRef(env->FindClass("android/content/Context")); @@ -465,7 +467,15 @@ public: env->ReleaseStringUTFChars(stringVar, str); return out; } - + // Opens a webpage using an Android intent. Called from native code. + virtual void openURL(const std::string& url) { + if (!_isInited || !_methodOpenURL) return; + JVMAttacher ta(_vm); + JNIEnv* env = ta.getEnv(); + jstring jurl = env->NewStringUTF(url.c_str()); + env->CallVoidMethod(instance, _methodOpenURL, jurl); + env->DeleteLocalRef(jurl); + } virtual void finish() { if (!_isInited) return; if (!_methodFinish) return; @@ -616,6 +626,7 @@ private: jmethodID _methodIsNetworkEnabled; jmethodID _methodGetPlatformStringVar; + jmethodID _methodOpenURL; // new JNI method for launching browser jclass _classWindow; jclass _classContext;