用Android studio创建一个空项目
将项目设置成project视图
点击src,选择new,新建一个文件夹
选择mainassets
将html文件放在该目录下(css、js等也都一起放过来)
3.编写代码
完整代码在后边,看第5部分。这里的只是为了便于划分代码功能
3.1 java调用jsjava代码
button.setOnClickListener(view -> {
webView.loadUrl("javascript:responseJava('java调用js')");
});
JavaScript代码
function responseJava(str) {
$("#show").html(str)
}
3.2 js调用java
javascript代码
// 从js调用java方法
function requestJava(){
// 调用Java方法
window.AndroidToast.show(info)
}
java代码
public class AndroidToast {
@JavascriptInterface
public void show(String str) {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
}
4.运行 4.1 java调用js
点击调用js按钮,可以看到网页上的文本发生了变化
4.2 js调用java
点击调用java按钮后可以看到安卓弹出消息条显示文本框内容
5. 整体代码
html代码
暂无调用
效果如下图:
主页面布局文件
效果如下图:
主活动java代码
package priv.happy.java_js_eachother;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.web_view);
// 加载网页
webView.loadUrl("file:///android_asset/index.html");
// 初始化
WebSettings webSettings = webView.getSettings();
// 允许js
webSettings.setJavaScriptEnabled(true);
// 设置默认字符编码
webSettings.setDefaultTextEncodingName("UTF-8");
// 添加js接口
webView.addJavascriptInterface(new AndroidToast(), "AndroidToast");
Button button = findViewById(R.id.call_js);
button.setOnClickListener(view -> {
webView.loadUrl("javascript:responseJava('java调用js')");
});
}
// 自定义的消息提示类
// @JavascriptInterface:作用是把AndroidToast类映射为Javascript中的AndroidToast对象
public class AndroidToast {
@JavascriptInterface
public void show(String str) {
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
}
}
参考
https://blog.csdn.net/fyj568213959/article/details/52777403



