From 61c53c1fe43c52713398b3ad05a305831143c0ee Mon Sep 17 00:00:00 2001 From: Alexander Mahr Date: Wed, 9 Oct 2024 20:29:40 +0200 Subject: [PATCH] example webmessage --- README.md | 5 +++ apk/src/app/example/ExampleApp.java | 42 +++++++++++-------- .../app/example/MyJavascriptInterface.java | 39 ----------------- 3 files changed, 29 insertions(+), 57 deletions(-) delete mode 100644 apk/src/app/example/MyJavascriptInterface.java diff --git a/README.md b/README.md index 7e98831..237b637 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # Repo allowing -in a KISS way- to create a containered way to build an Android App APK + +## changelog + +* using https://android.googlesource.com/platform/cts/+/android-7.1.1_r13/tests/tests/webkit/src/android/webkit/cts/PostMessageTest.java derived +webmessage to send data to Javascript/Webview from Java (using a timer) ## brach `no-res.xml` this branch features the exmaple.app to not require the compoletely bogus unneeded requirement diff --git a/apk/src/app/example/ExampleApp.java b/apk/src/app/example/ExampleApp.java index 9742665..073d095 100644 --- a/apk/src/app/example/ExampleApp.java +++ b/apk/src/app/example/ExampleApp.java @@ -1,22 +1,27 @@ package app.example; import android.util.Log; -import android.widget.TextView; +import android.util.Base64; import android.app.Activity; import android.os.Bundle; -import android.text.method.ScrollingMovementMethod; -import android.view.MenuItem; -import android.view.*; -import android.widget.*; -import android.webkit.WebView; -import android.webkit.*; -import android.view.ViewGroup.*; -import android.util.Base64; -import java.lang.Thread; import android.os.CountDownTimer; +import android.text.method.ScrollingMovementMethod; +import android.view.*; +//import android.view.MenuItem; +import android.view.ViewGroup.*; +import android.widget.*; +//import android.widget.TextView; +import android.webkit.*; +import android.net.Uri; +//import android.webkit.WebView; +//import android.webkit.WebMessage; +//import android.webkit.WebMessagePort; public class ExampleApp extends Activity { + + private static final String BASE_URI = "https://alexmahr.de"; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -35,23 +40,24 @@ public class ExampleApp extends Activity { myWebSettings.setJavaScriptEnabled(true); myWebView.addJavascriptInterface(this, "myJavaScriptInterface"); // providing a webpage inline - String unencodedHtml = "https://html5test.co/

this is html

this is a h2

"; + String unencodedHtml = "https://html5test.co/

this is html

this is a h2

"; String encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(),Base64.NO_PADDING); - myWebView.loadDataWithBaseURL("https://alexmahr.de/",unencodedHtml, "text/html", "UTF-8",null); + myWebView.loadDataWithBaseURL(BASE_URI,unencodedHtml, "text/html", "UTF-8",null); //myWebView.loadData(encodedHtml, "text/html", "base64"); // alternatively this could be to load a website //myWebView.loadUrl("https://alexmahr.de/ru"); setContentView(myWebView); new CountDownTimer(30000, 1000) { - public void onTick(long millisUntilFinished) { + public void onTick(long millisUntilFinished) { + myWebView.postWebMessage(new WebMessage("this is the message"+millisUntilFinished),Uri.parse(BASE_URI)); // mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); - myWebView.evaluateJavascript("document.body.innerHTML='SUP "+millisUntilFinished+" all is lost';",null); - } +// myWebView.evaluateJavascript("document.body.innerHTML='SUP "+millisUntilFinished+" all is lost';",null); + } - public void onFinish() { + public void onFinish() { myWebView.evaluateJavascript("document.body.innerHTML='all is lost';",null); - } - }.start(); + } + }.start(); } @JavascriptInterface public String toString() { diff --git a/apk/src/app/example/MyJavascriptInterface.java b/apk/src/app/example/MyJavascriptInterface.java deleted file mode 100644 index 7c5668b..0000000 --- a/apk/src/app/example/MyJavascriptInterface.java +++ /dev/null @@ -1,39 +0,0 @@ -package app.example; - -import android.util.Log; -import android.widget.TextView; -import android.app.Activity; -import android.os.Bundle; -import android.text.method.ScrollingMovementMethod; -import android.view.MenuItem; -import android.view.*; -import android.widget.*; -import android.webkit.WebView; -import android.webkit.*; -import android.view.ViewGroup.*; -import android.util.Base64; -import android.os.Environment; -import java.io.*; -//File all; - -public class MyJavascriptInterface { - private Activity activity; - private WebView webview; - - public MyJavascriptInterface(Activity activity,WebView webview) { - this.activity = activity; - this.webview = webview;; - } - - // @JavascriptInterface - // public void startVideo(String videoAddress){ - // Intent intent = new Intent(Intent.ACTION_VIEW); - // intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); - // activity.startActivity(intent); - // } - @JavascriptInterface - public String toString() { -// this.webview.evaluateJavascript("(setTimeout(()=>{document.body.innerHTML='all gone';},2000)()",null); - return "injectedobject"; - } -}