From f1dcecf971188761f7e54eb5115efb256d80ee33 Mon Sep 17 00:00:00 2001 From: Alexander Mahr Date: Wed, 9 Oct 2024 16:23:50 +0200 Subject: [PATCH] javascriptinterface in activity itself --- apk/Makefile | 5 +++-- apk/src/app/example/ExampleApp.java | 21 ++++++++------------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/apk/Makefile b/apk/Makefile index 659548b..cc076c4 100644 --- a/apk/Makefile +++ b/apk/Makefile @@ -31,14 +31,15 @@ build : ./bin/example.app.apk #./bin/classes.dex : ./obj/app/example/ExampleApp.class ./obj/app/example/ExampleApp$$1.class ./obj/app/example/MyJavascriptInterface.class #./bin/classes.dex : ./obj/app/example/ExampleApp.class ./obj/app/example/MyJavascriptInterface.class ./obj/app/example/MyRunnable.class -./bin/classes.dex : ./obj/app/example/ExampleApp.class ./obj/app/example/MyJavascriptInterface.class ./obj/app/example/MyRunnable.class +#./bin/classes.dex : ./obj/app/example/ExampleApp.class ./obj/app/example/MyJavascriptInterface.class ./obj/app/example/MyRunnable.class +./bin/classes.dex : ./obj/app/example/ExampleApp.class $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/d8 $^ --lib $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar --output bin ./src/app/example/R.java : $(shell find ./res -type f) $(ANDROID_HOME)/build-tools/$(ANDROID_VERSION)/aapt package -v -f -m -S ./res -J ./src -M ./AndroidManifest.xml \ -I $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -./obj/app/example/ExampleApp.class : ./src/app/example/ExampleApp.java ./src/app/example/R.java ./src/app/example/MyJavascriptInterface.java +./obj/app/example/ExampleApp.class : ./src/app/example/ExampleApp.java ./src/app/example/R.java javac -d ./obj -classpath $(ANDROID_HOME)/platforms/$(PLATFORM)/android.jar -sourcepath ./src $< ./ToyKey.keystore : diff --git a/apk/src/app/example/ExampleApp.java b/apk/src/app/example/ExampleApp.java index 39eb69b..8861333 100644 --- a/apk/src/app/example/ExampleApp.java +++ b/apk/src/app/example/ExampleApp.java @@ -23,7 +23,7 @@ public class ExampleApp extends Activity { this.requestWindowFeature(Window.FEATURE_NO_TITLE); // we create the webview (at least on the android 14 that is a webview that features avif + websockets etc....) WebView myWebView = new WebView(this);//activityContext); - MyJavascriptInterface myJavaScriptInterface = new MyJavascriptInterface(this,myWebView); +// MyJavascriptInterface myJavaScriptInterface = new MyJavascriptInterface(this,myWebView); // we create a webview (there is also setwebviewclient-vs-setwebchromeclient WebViewClient myWebViewClient= new WebViewClient(); myWebView.setWebViewClient(myWebViewClient); @@ -32,7 +32,7 @@ public class ExampleApp extends Activity { myWebSettings.setBuiltInZoomControls(true); myWebSettings.setDisplayZoomControls(false); myWebSettings.setJavaScriptEnabled(true); - myWebView.addJavascriptInterface(myJavaScriptInterface, "myJavaScriptInterface"); + myWebView.addJavascriptInterface(this, "myJavaScriptInterface"); // providing a webpage inline String unencodedHtml = "https://html5test.co/

this is html

this is a h2

"; String encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(),Base64.NO_PADDING); @@ -40,17 +40,12 @@ public class ExampleApp extends Activity { // alternatively this could be to load a website //myWebView.loadUrl("https://alexmahr.de/ru"); setContentView(myWebView); - // new java.util.Timer().schedule( new MyRunnable(myWebView),2000); -// java.util.TimerTask() { -// @Override -// public void run() { - // this actually blocks all of the webview - try { - Thread.sleep(3000); - } catch (Exception e) { } myWebView.evaluateJavascript("document.body.innerHTML='all is lost';",null); -// // this code will be executed after 2 seconds -// } -// , 2000); + } + @JavascriptInterface + public String toString() { +// this.webview.evaluateJavascript("(setTimeout(()=>{document.body.innerHTML='all gone';},2000)()",null); + return "this is good"; } } +