關鍵點
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();
}
}