BÀI 76 - WEBVIEW TRONG ANDROID

  • WebView sẽ giúp ứng dụng bản hiển thị một trang web ngay trong ứng dụng thay vì phải nhảy ra Chrome để mở trang web đó. Làm như này nè:

<WebView

android:id="@+id/webView_covid_chitietcanhiem"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

  • Main.java

wvCovid = findViewById(R.id.webView_covid_chitietcanhiem);


wvCovid.loadUrl(link);

  • Cho phép android chạy JavaScrip của trang web:

WebSettings webSettings = wvCovid.getSettings();

webSettings.setJavaScriptEnabled(true);

Cho phép điều hướng trang:

Chức năng này sẽ cho phép ghi đè lên webView trong ứng dụng, nghĩa là người dùng có thể mở tab mới ngay trong webView này.

NewWebViewClient webViewClient;

  • Tạo Class như dưới

private class WebViewClient extends android.webkit.WebViewClient{

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

return true;

}

}

  • Sử dụng như sau:

wvCovid.setWebViewClient(new WebViewClient());

Bây giờ khi người dùng nhấp vào một liên kết, hệ thống sẽ gọi shouldOverrideUrlLoading(), kiểm tra xem máy chủ lưu trữ URL có khớp với một miền cụ thể hay không (như đã định nghĩa ở trên). Nếu nó khớp, thì phương thức trả về false để không ghi đè việc tải URL (nó cho phép WebViewtải URL như bình thường). Nếu máy chủ lưu trữ URL không khớp, thì một máy chủ sẽ Intent được tạo để khởi chạy Hoạt động mặc định để xử lý URL (hoạt động này phân giải thành trình duyệt web mặc định của người dùng).

ĐIỀU HƯỚNG LỊCH SỬ TRANG WEB

Khi bạn WebViewghi đè tải URL, nó sẽ tự động tích lũy lịch sử các trang web đã truy cập. Bạn có thể điều hướng lùi và chuyển tiếp qua lịch sử với goBack() goForward().

Ví dụ: phần sau cho thấy cách bạn Activity có thể sử dụng nút Quay lại của thiết bị để điều hướng lùi lại:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && wvCovid.canGoBack()){

wvCovid.goBack();

return true;

}

return super.onKeyDown(keyCode, event);

}

Các canGoBack() phương pháp trả về true nếu có thực sự là lịch sử trang web cho người sử dụng để truy cập. Tương tự như vậy, bạn có thể sử dụng canGoForward() để kiểm tra xem có lịch sử chuyển tiếp hay không. Nếu bạn không thực hiện kiểm tra này, thì khi người dùng đến cuối lịch sử goBack() hoặc goForward() không làm gì cả.