From 98786ee3f3b062e16d843bb04c0999fedfa5d059 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Fern=C3=A1ndez?= Date: Wed, 20 Mar 2019 16:59:17 +0100 Subject: [PATCH] open urls in external browser (#133) --- assets/android.lua | 14 ++++++++++++++ src/org/koreader/launcher/MainActivity.java | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/assets/android.lua b/assets/android.lua index ecc44a0fd..eb57661cf 100644 --- a/assets/android.lua +++ b/assets/android.lua @@ -1554,6 +1554,20 @@ local function run(android_app_state) end) end + android.openLink = function(link) + return JNI:context(android.app.activity.vm, function(JNI) + local uri_string = JNI.env[0].NewStringUTF(JNI.env, link) + local result = JNI:callIntMethod( + android.app.activity.clazz, + "openLink", + "(Ljava/lang/String;)I", + uri_string + ) + JNI.env[0].DeleteLocalRef(JNI.env, uri_string) + return result + end) + end + android.notification = function(message) return JNI:context(android.app.activity.vm, function(JNI) local text = JNI.env[0].NewStringUTF(JNI.env, message) diff --git a/src/org/koreader/launcher/MainActivity.java b/src/org/koreader/launcher/MainActivity.java index 1138fd30b..775e89a40 100644 --- a/src/org/koreader/launcher/MainActivity.java +++ b/src/org/koreader/launcher/MainActivity.java @@ -297,6 +297,10 @@ public int download(final String url, final String name) { return 0; } + public int openLink(String url) { + return openWebPage(url) ? 0 : 1; + } + // ---------------------------------- private WifiManager getWifiManager() { return (WifiManager) this.getSystemService(Context.WIFI_SERVICE); @@ -318,4 +322,16 @@ private void setFullscreenLayout() { View.SYSTEM_UI_FLAG_LOW_PROFILE); } } + + private boolean openWebPage(String url) { + Uri webpage = Uri.parse(url); + Intent intent = new Intent(Intent.ACTION_VIEW, webpage); + if (intent.resolveActivity(getPackageManager()) != null) { + startActivity(intent); + return true; + } else { + // cannot find a package able to open the page + return false; + } + } }