From 7e64c8d9a7fa9716ae6f6e60e170854bb5d948e5 Mon Sep 17 00:00:00 2001 From: Larry Kluger Date: Sun, 19 May 2024 22:52:52 +0300 Subject: [PATCH 1/5] Android to html working --- .../g00fy2/quickiesample/WebViewActivity.kt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt index a1245d5..cfb8db5 100644 --- a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt +++ b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt @@ -1,6 +1,8 @@ package io.github.g00fy2.quickiesample +import android.annotation.SuppressLint import android.os.Bundle +import android.webkit.JavascriptInterface import android.webkit.WebView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity @@ -8,7 +10,15 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat class WebViewActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { + + public class JsObject { + @JavascriptInterface + public fun msg(): String { + return "From Android!" + } + } + + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_web_view) @@ -22,8 +32,12 @@ class WebViewActivity : AppCompatActivity() { val url = bundle?.getString("url") val myWebView: WebView = findViewById(R.id.webview) - myWebView.loadUrl(url!!) + @SuppressLint("SetJavaScriptEnabled") + myWebView.getSettings().javaScriptEnabled = true + myWebView.addJavascriptInterface(JsObject(), "Android") - - } + myWebView.loadUrl("https://docusign.github.io/examples/androidTest.html?$url") + //myWebView.loadUrl("https://xerox.com?$url") + //myWebView.loadUrl(url!!) + } } \ No newline at end of file From 65bd0b66703b58c649849b9579544a6356f39d92 Mon Sep 17 00:00:00 2001 From: Larry Kluger Date: Sun, 19 May 2024 23:08:00 +0300 Subject: [PATCH 2/5] Frame layout for web view --- sample/src/main/AndroidManifest.xml | 6 ++++++ .../g00fy2/quickiesample/WebViewActivity.kt | 9 ++++----- sample/src/main/res/layout/activity_web_view.xml | 11 ++++++----- sample/src/main/res/values-night/themes.xml | 7 +++++++ sample/src/main/res/values/attrs.xml | 6 ++++++ sample/src/main/res/values/colors.xml | 7 ++++++- sample/src/main/res/values/strings.xml | 3 +++ sample/src/main/res/values/styles.xml | 11 +++++++++++ sample/src/main/res/values/themes.xml | 15 +++++++++++++++ 9 files changed, 64 insertions(+), 11 deletions(-) create mode 100644 sample/src/main/res/values-night/themes.xml create mode 100644 sample/src/main/res/values/attrs.xml create mode 100644 sample/src/main/res/values/styles.xml create mode 100644 sample/src/main/res/values/themes.xml diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml index bb7280c..8a08d39 100644 --- a/sample/src/main/AndroidManifest.xml +++ b/sample/src/main/AndroidManifest.xml @@ -12,6 +12,12 @@ android:supportsRtl="true" android:theme="@style/Theme.Material3.DayNight" tools:ignore="DataExtractionRules"> + diff --git a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt index cfb8db5..2525061 100644 --- a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt +++ b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt @@ -1,5 +1,4 @@ package io.github.g00fy2.quickiesample - import android.annotation.SuppressLint import android.os.Bundle import android.webkit.JavascriptInterface @@ -19,16 +18,16 @@ class WebViewActivity : AppCompatActivity() { } override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) enableEdgeToEdge() + super.onCreate(savedInstanceState) setContentView(R.layout.activity_web_view) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> - val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) - v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) + val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } - val bundle = intent.extras + val bundle = intent.extras val url = bundle?.getString("url") val myWebView: WebView = findViewById(R.id.webview) diff --git a/sample/src/main/res/layout/activity_web_view.xml b/sample/src/main/res/layout/activity_web_view.xml index cdba6eb..62fe3af 100644 --- a/sample/src/main/res/layout/activity_web_view.xml +++ b/sample/src/main/res/layout/activity_web_view.xml @@ -1,16 +1,17 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/sample/src/main/res/values-night/themes.xml b/sample/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..aefc163 --- /dev/null +++ b/sample/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/sample/src/main/res/values/attrs.xml b/sample/src/main/res/values/attrs.xml new file mode 100644 index 0000000..e52391d --- /dev/null +++ b/sample/src/main/res/values/attrs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml index 27a87dc..ce12986 100644 --- a/sample/src/main/res/values/colors.xml +++ b/sample/src/main/res/values/colors.xml @@ -1,4 +1,9 @@ - #3DDC84 + #3DDC84 + #FF039BE5 + #FF01579B + #FF40C4FF + #FF00B0FF + #66000000 \ No newline at end of file diff --git a/sample/src/main/res/values/strings.xml b/sample/src/main/res/values/strings.xml index d39b760..851e4c3 100644 --- a/sample/src/main/res/values/strings.xml +++ b/sample/src/main/res/values/strings.xml @@ -7,4 +7,7 @@ Scan barcode BarcodeFormat This app opens the QR-Code URL in a Webview + FullscreenActivity + Dummy Button + DUMMY\nCONTENT \ No newline at end of file diff --git a/sample/src/main/res/values/styles.xml b/sample/src/main/res/values/styles.xml new file mode 100644 index 0000000..cf3f62c --- /dev/null +++ b/sample/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/sample/src/main/res/values/themes.xml b/sample/src/main/res/values/themes.xml new file mode 100644 index 0000000..2379ba1 --- /dev/null +++ b/sample/src/main/res/values/themes.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file From e4a7f31866d2a1e28dee6565b031994b2f12cabb Mon Sep 17 00:00:00 2001 From: Larry Kluger Date: Sun, 19 May 2024 23:13:09 +0300 Subject: [PATCH 3/5] hide the bottom system bar --- .../io/github/g00fy2/quickiesample/WebViewActivity.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt index 2525061..6b3f6fb 100644 --- a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt +++ b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt @@ -1,11 +1,14 @@ package io.github.g00fy2.quickiesample import android.annotation.SuppressLint +import android.icu.text.DisplayContext import android.os.Bundle +import android.view.WindowInsets import android.webkit.JavascriptInterface import android.webkit.WebView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat class WebViewActivity : AppCompatActivity() { @@ -27,6 +30,12 @@ class WebViewActivity : AppCompatActivity() { insets } + val windowInsetsController = + WindowCompat.getInsetsController(window, window.decorView) + + // Hide the system bars. + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + val bundle = intent.extras val url = bundle?.getString("url") From 127879d788e44d1e90b531f42078ae9dfe764690 Mon Sep 17 00:00:00 2001 From: Larry Kluger Date: Sun, 19 May 2024 23:19:13 +0300 Subject: [PATCH 4/5] full screen webview --- .../kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt index 6b3f6fb..68a39bc 100644 --- a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt +++ b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt @@ -32,11 +32,12 @@ class WebViewActivity : AppCompatActivity() { val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) - // Hide the system bars. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + // Hide top app name bar + supportActionBar?.hide() - val bundle = intent.extras + val bundle = intent.extras val url = bundle?.getString("url") val myWebView: WebView = findViewById(R.id.webview) From aeac0bf9b8838570f9c7f22485aa38b439c54e3f Mon Sep 17 00:00:00 2001 From: Larry Kluger Date: Sun, 26 May 2024 16:07:37 +0300 Subject: [PATCH 5/5] Working but no postSign The signing ceremony opens, but the PostMsg is not seen in JavaScript-land --- .../g00fy2/quickiesample/ResultActivity.kt | 26 +++++++++ .../g00fy2/quickiesample/WebViewActivity.kt | 56 +++++++++++++++---- .../src/main/res/layout/activity_result.xml | 17 ++++++ 3 files changed, 87 insertions(+), 12 deletions(-) create mode 100644 sample/src/main/kotlin/io/github/g00fy2/quickiesample/ResultActivity.kt create mode 100644 sample/src/main/res/layout/activity_result.xml diff --git a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/ResultActivity.kt b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/ResultActivity.kt new file mode 100644 index 0000000..eb1613c --- /dev/null +++ b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/ResultActivity.kt @@ -0,0 +1,26 @@ +package io.github.g00fy2.quickiesample +import android.annotation.SuppressLint +import android.content.Intent +import android.os.Bundle +import android.webkit.JavascriptInterface +import android.webkit.WebView +import android.widget.TextView +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat.startActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat + +public class ResultActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val bundle = intent.extras + val postMsg = bundle?.getString("postMsg") + + val myTextView: TextView = findViewById(R.id.textView) + myTextView.text = postMsg + } +} \ No newline at end of file diff --git a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt index 68a39bc..4afed60 100644 --- a/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt +++ b/sample/src/main/kotlin/io/github/g00fy2/quickiesample/WebViewActivity.kt @@ -1,25 +1,37 @@ package io.github.g00fy2.quickiesample import android.annotation.SuppressLint -import android.icu.text.DisplayContext +import android.content.Intent import android.os.Bundle -import android.view.WindowInsets import android.webkit.JavascriptInterface +import android.webkit.WebResourceRequest import android.webkit.WebView +import android.webkit.WebViewClient import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat -class WebViewActivity : AppCompatActivity() { +public class WebViewActivity : AppCompatActivity() { - public class JsObject { - @JavascriptInterface - public fun msg(): String { - return "From Android!" + class MyWebViewClient : WebViewClient() { + override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { + return false } } + @JavascriptInterface + public fun msg(): String { + return "From Android!" + } + + @JavascriptInterface + public fun postMsg(msg: String) { + val resultActivityIntent = Intent(this, ResultActivity::class.java) + resultActivityIntent.putExtra("postMsg", msg); + startActivity(resultActivityIntent) + } + override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) @@ -38,15 +50,35 @@ class WebViewActivity : AppCompatActivity() { supportActionBar?.hide() val bundle = intent.extras - val url = bundle?.getString("url") + val url = bundle!!.getString("url") val myWebView: WebView = findViewById(R.id.webview) + myWebView.webViewClient = WebViewClient() + + val wvSettings = myWebView.getSettings() @SuppressLint("SetJavaScriptEnabled") - myWebView.getSettings().javaScriptEnabled = true - myWebView.addJavascriptInterface(JsObject(), "Android") + wvSettings.javaScriptEnabled = true + wvSettings.domStorageEnabled = true + //wvSettings.loadWithOverviewMode = true + //wvSettings.useWideViewPort = true + //wvSettings.builtInZoomControls = true + //wvSettings.displayZoomControls = true + //wvSettings.defaultTextEncodingName = "utf-8" + + myWebView.addJavascriptInterface(this, "Android") + + //myWebView.loadUrl("https://docusign.github.io/examples/androidTest.html") + myWebView.loadUrl(url!!) + + // REMOVE Uses url to stop lint errors if url is not used above + val resultActivityIntent = Intent(this, ResultActivity::class.java) + resultActivityIntent.putExtra("foo", url); + - myWebView.loadUrl("https://docusign.github.io/examples/androidTest.html?$url") //myWebView.loadUrl("https://xerox.com?$url") - //myWebView.loadUrl(url!!) } + + + + } \ No newline at end of file diff --git a/sample/src/main/res/layout/activity_result.xml b/sample/src/main/res/layout/activity_result.xml new file mode 100644 index 0000000..10549f4 --- /dev/null +++ b/sample/src/main/res/layout/activity_result.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file