1.在main文件夹下创建assets文件夹导入html文件
Carson_Ho// JS代码
// Android需要调用的方法
function callJS(){
alert("Android调用了JS的callJS方法");
}
2.布局
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
android:id="@+id/webview"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:id="@+id/button"
android:text="点我调用js"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
3.实现
public class Frag_02 extends Fragment implements com.smq.zk3.view.View {
private Presenter presenter;
private WebView webView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.frag_02,container,false);
presenter = new Presenter(this);
presenter.onRelated();
webView = view.findViewById(R.id.webview);
Button button=view.findViewById(R.id.button);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/info.html");
webView.addJavascriptInterface(new Jsinterface(), "android");
webView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webView.loadUrl("javascript:callJS()");
}
});
return view;
}
private class Jsinterface {
/**
* 注意这里的@JavascriptInterface注解, target是4.2以上都需要添加这个注解,否则无法调用
* @param text
*/
@JavascriptInterface
public void showToast(String text){
Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void showJsText(String text){
webView.loadUrl("javascript:jsText('"+text+"')");
}
}
@Override
public void getViewData(String json) {
}
@Override
public void onDestroy() {
super.onDestroy();
presenter.deatchView();
webView.destroy();
}
}
效果: