跳转至

js调用Java方法

js或是ts调用Java方法。

Java端

首先js和Java之间约定一个接口名,这里叫做androidInterface

Java端要给WebView添加js接口。即调用addJavascriptInterface方法。

WebView加载本地存储的网页基础上,我们对WebView进行设置。

WebView webView = findViewById(R.id.web2);
webView.addJavascriptInterface(this, "androidInterface"); // 添加接口
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAllowFileAccessFromFileURLs(true);
webSettings.setAllowContentAccess(true);
webSettings.setDomStorageEnabled(true);
webView.loadUrl(url);

上面的this是activity,在这个activity中我们新增2个Java方法。

import android.webkit.JavascriptInterface;

@JavascriptInterface
public String getStringInfo() {
    return Build.BRAND;
}

@JavascriptInterface
public String getOneJson() {
    return new Gson().toJson(new User((int) System.currentTimeMillis(), true, "default rule", 3));
}
方法都添加了@JavascriptInterface注解。并且返回的都是字符串。

如果要传送对象,可以转换为json字符串来传送。

这样Java方面就准备完毕了。

网页端

前端调用Java方法需要借助window。ts或者js都用到window

上面我们约定了使用androidInterface为接口名。调用方法如window.androidInterface

例如typescript调用Java方法。

callNative(): string {
    let result = window.androidInterface.getStringInfo();
    return result;
}

getOneObject(): User {
    let json = window.androidInterface.getOneJson();
    let user: User = JSON.parse(json);
    return user;
}

js的也类似,使用window.androidInterface

本站说明

一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~

📖AndroidTutorial 📚AndroidTutorial 🙋反馈问题 🔥最近更新 🍪投喂作者

Ads