switch to load html from file (form assets)

This commit is contained in:
Alexander Mahr 2024-10-09 21:36:31 +02:00
parent dc86fdeb8b
commit a2c5d60e17

View file

@ -13,14 +13,41 @@ import android.widget.*;
//import android.widget.TextView; //import android.widget.TextView;
import android.webkit.*; import android.webkit.*;
import android.net.Uri; import android.net.Uri;
import org.json.JSONObject;
//import android.webkit.WebView; //import android.webkit.WebView;
//import android.webkit.WebMessage; //import android.webkit.WebMessage;
//import android.webkit.WebMessagePort; //import android.webkit.WebMessagePort;
import java.io.InputStream;
public class ExampleApp extends Activity { public class ExampleApp extends Activity {
private static final String BASE_URI = "https://alexmahr.de"; private static final String BASE_URI = "https://alexmahr.de";
private WebMessagePort port;
private void initPort(WebView myWebView) {
final WebMessagePort[] channel=myWebView.createWebMessageChannel();
port=channel[0];
port.setWebMessageCallback(new WebMessagePort.WebMessageCallback() {
@Override
public void onMessage(WebMessagePort port, WebMessage message) {
}
});
myWebView.postWebMessage(new WebMessage("", new WebMessagePort[]{channel[1]}),Uri.parse(BASE_URI));
}
public String readFileFromAssets(String filename) {
String filecontents = "";
try {
InputStream stream = getAssets().open(filename);
int filesize = stream.available();
byte[] filebuffer = new byte[filesize];
stream.read(filebuffer);
stream.close();
filecontents = new String(filebuffer);
} catch (Exception e) {
// I <3 java exceptions
}
return filecontents;
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -39,17 +66,19 @@ public class ExampleApp extends Activity {
myWebSettings.setDisplayZoomControls(false); myWebSettings.setDisplayZoomControls(false);
myWebSettings.setJavaScriptEnabled(true); myWebSettings.setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(this, "myJavaScriptInterface"); myWebView.addJavascriptInterface(this, "myJavaScriptInterface");
// providing a webpage inline // load the html from assets file
String unencodedHtml = "<!DOCTYPE html><html><script> window.addEventListener('message',(e)=>{document.body.innerHTML='';u=document.createElement('div');u.innerHTML='message'+e.data;document.body.appendChild(u);},true);window.addEventListener('load',()=>{d=document.createElement('div');d.innerHTML=myJavaScriptInterface.toString()+'JAVASCRIPT works';document.body.appendChild(d);},false);</script><a href='https://html5test.co/'>https://html5test.co/</a><h1> this is html <h1> <h2> this is a h2</h2><img src='https://wald.alexmahr.de/images/rabe.avif'></html>"; String html = readFileFromAssets("index.html");
String encodedHtml = Base64.encodeToString(unencodedHtml.getBytes(),Base64.NO_PADDING); myWebView.loadDataWithBaseURL(BASE_URI,html, "text/html", "UTF-8",null);
myWebView.loadDataWithBaseURL(BASE_URI,unencodedHtml, "text/html", "UTF-8",null);
//myWebView.loadData(encodedHtml, "text/html", "base64"); //myWebView.loadData(encodedHtml, "text/html", "base64");
// alternatively this could be to load a website // alternatively this could be to load a website
//myWebView.loadUrl("https://alexmahr.de/ru"); //myWebView.loadUrl("https://alexmahr.de/ru");
setContentView(myWebView); setContentView(myWebView);
new CountDownTimer(30000, 1000) { new CountDownTimer(5000, 1000) {
public void onTick(long millisUntilFinished) { public void onTick(long millisUntilFinished) {
myWebView.postWebMessage(new WebMessage("this is the message"+millisUntilFinished),Uri.parse(BASE_URI)); try{
JSONObject MyJSONObject = new JSONObject("{\"json\":[1,2,3],\"something\":\"test\"}");
myWebView.postWebMessage(new WebMessage("this is the message"+millisUntilFinished+ " " + MyJSONObject.get("something")),Uri.parse(BASE_URI));
} catch( Exception e) { }
// mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); // 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);
} }