- vừa được xem lúc

5 điều về WebView Android có thể bạn chưa biết

0 0 39

Người đăng: Nguyen Huu Cong

Theo Viblo Asia

WebView là một phần không thể thiếu của các ứng dụng, nó cho phép hiển thị các trang web trên màn hình giao diện người dùng. Dưới đây là 5 điều mà khi bạn mới tiếp cận đến WebView thì có thể chưa biết đến.

1. Intercepting URLs

Bằng cách implement phương thức shouldOverrideUrlLoading trong quá trình khởi tạo WebViewClient, ta có thể bắt chặn URL quá trình trang web điều hướng.

Bằng cách này, ta có thể kiểm soát xem URL đó có nên được tải hoặc mở một activity/ service nhất định bằng cách sử dụng Intenthay không.

2. Basic Web Authentication

Nhiều trang web sẽ yêu cầu người dùng nhập thông tin đăng nhập của họ. Khi ta setup WebView lần đầu tiên, ta có thể bỏ lỡ điều này và dẫn đến lỗi xác thực 401 khi tải trang.

Bằng cách implement phương thức onReceivedHttpAuthRequest, ta có thể thực hiện dễ dàng basic authentication trong WebView:

override fun onReceivedHttpAuthRequest( view: WebView, handler: HttpAuthHandler, host: String, realm: String) { handler.proceed("username", "password")
}

3. Setting Listeners cho Buttons và EditText của WebView

Khi ta muốn lấy dữ liệu từ các form của WebView, hoặc thực hiện một action khi một button bên trong WebView được click, ta có thể tận dụng đến khả năng tương tác Android-JavaScript.

Nếu ta biết ID của view/widget trong HTML, thì việc thực hiện các action trên Android dựa trên các tương tác WebView là khá đơn giản.

Chỉ cần sử dụng phương thức evaluateJavaScript và truyền mã JS dưới dạng một string. Tốt nhất thì nó nên được thực hiện trong phương thức onPageLoadFinishing

Đoạn code trên mới chỉ là để lấy dữ liệu từ các form WebView khi nút được Click và chuyển chúng đến phương thức Android.onWebBtnClick. Để nó hoạt động được, ta cần tạo một lớp JavaScript interface và thiết lập nó trên WebView

class WebAppInterface { Context mContext; WebAppInterface(Context c) { mContext = c; } @JavascriptInterface public void onWebBtnClick(String username, String password) { //handle the data captured from webview }
}

Ta thiết lập trên WebView như sau:

webView.addJavascriptInterface(new WebAppInterface(this), "Android");

4. Trigger JavaScript Alert Prompts từ Android

Theo mặc định, prompts từ JavaScript không hiển thị nguyên bản trong Android. Vì vậy, ta cần ghi đè các phương thức onJsAlert, onJsPromptonJsConfirm trong WebChromeClient interface để hiển thị alert () của JavaScript và các phương thức khác.

webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new MyWebChromeClient());

Bằng cách implement phương thức dưới đây bạn có thể show alert của Android:

final class MyWebChromeClient extends WebChromeClient { @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { //implement AlertDialog here return true; }
}

5. Hiển thị Android File Chooser từ WebView

Ta cần implement phương thức onShowFileChooser trong WebChromeClient, trong đó ta phải thiết lập trình chọn file native. Dùng ValueCallBack interface của WebKit giúp chuyển dữ liệu từ trình chọn file Android sang mã JavaScript. Ở trong phương thức onActivityResult, khi ta lấy được dữ liệu, chỉ cần chuyển nó vào uploadFile instance theo cách sau:

uploadFile.onReceiveValue(results);

Và lúc này dữ liệu được chọn đã được chuyển từ Android sang JavaScript.

Tham khảo

https://betterprogramming.pub/5-android-webview-secrets-you-probably-didnt-know-b23f8a8b5a0c

https://developer.android.com/reference/android/webkit/WebView

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 206

- vừa được xem lúc

[Android] Hiển thị Activity trên màn hình khóa - Show Activity over lock screen

Xin chào các bạn, Hôm nay là 30 tết rồi, ngồi ngắm trời chờ đón giao thừa, trong lúc rảnh rỗi mình quyết định ngồi viết bài sau 1 thời gian vắng bóng. .

0 0 107

- vừa được xem lúc

Tìm hiểu Proguard trong Android

1. Proguard là gì . Cụ thể nó giúp ứng dụng của chúng ta:. .

0 0 100

- vừa được xem lúc

Làm ứng dụng học toán đơn giản với React Native - Phần 6

Chào các bạn một năm mới an khang thịnh vượng, dồi dào sức khỏe. Lại là mình đây Đây là link app mà các bạn đang theo dõi :3 https://play.google.com/store/apps/details?id=com.

0 0 68

- vừa được xem lúc

20 Plugin hữu ích cho Android Studio

1. CodeGlance. Plugin này sẽ nhúng một minimap vào editor cùng với thanh cuộn cũng khá là lớn. Nó sẽ giúp chúng ta xem trước bộ khung của code và cho phép điều hướng đến đoạn code mà ta mong muốn một cách nhanh chóng.

0 0 315