关键点
1 .
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);// 这样网页就可加载JavaScript了
2
webview.addJavascriptInterface(new GetTitle2(), "getTitle"); // 向webview注册一个Java对象
3写js将要调用的方法 用 @JavascriptInterface备注
@JavascriptInterface
public void onGetTitle(String title) {
Log.e("tag","title=="+title);
tvTitle.setText(title); //设置标题
}
package com.example.myapplication;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity2 extends AppCompatActivity {
private WebView webview;
private TextView tvTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
webview = (WebView)findViewById(R.id.webView);
tvTitle = (TextView)findViewById(R.id.tvTitle);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);// 这样网页就可加载JavaScript了
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setBuiltInZoomControls(true);// 显示放大缩小按钮
settings.setSupportZoom(true);// 允许放大缩小
settings.setSupportMultipleWindows(true);
webview.addJavascriptInterface(new GetTitle2(), "getTitle"); // 向webview注册一个Java对象
webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, String url) {
//注入一段JavaScript,该代码主要是调用Java对象的一个方法并将页面标题作为参数
view.loadUrl("javascript:window.getTitle.onGetTitle("
+ "document.getElementsByTagName('title')[0].innerHTML" + ");");
super.onPageFinished(view, url);
}
});
webview.setWebChromeClient(new WebChromeClient(){
@Override
public void onReceivedTitle(WebView view, String title) {
tvTitle.setText(title);
}
});
webview.loadUrl("https://www.baidu.com/");
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
if(webview.canGoBack()) {
webview.goBack();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
//注入JavaScript的Java类
class GetTitle2 {
@JavascriptInterface
public void onGetTitle(String title) {
Log.e("tag","title=="+title);
tvTitle.setText(title); //设置标题
}
}
@Override
protected void onDestroy() {
webview.destroy();
super.onDestroy();
}
}