Đã đăng vào Mar 28th, 2018 2:28 a.m. 11 phút đọc
Nếu bạn muốn cung cấp một ứng dụng web [hoặc chỉ là một trang web] như là một phần của ứng dụng khách, bạn có thể thực hiện bằng cách sử dụng WebView. Lớp WebView là một mở rộng của lớp View của Android cho phép bạn hiển thị các trang web như là một phần của bố cục hoạt động của bạn. Tính năng này không bao gồm bất kỳ tính năng nào của trình duyệt web được phát triển đầy đủ, chẳng hạn như điều khiển điều hướng hoặc thanh địa chỉ. Tất cả những gì mà WebView thực hiện, theo mặc định, là hiển thị một trang web.
- Một tình huống phổ biến sử dụng WebView hữu ích là khi bạn muốn cung cấp thông tin trong ứng dụng của mình mà bạn có thể cần phải cập nhật, chẳng hạn như thỏa thuận người dùng cuối hoặc hướng dẫn sử dụng. Trong ứng dụng Android của bạn, bạn có thể tạo một Hoạt động có chứa WebView, sau đó sử dụng nó để hiển thị tài liệu của bạn được lưu trữ trực tuyến.
- Một trường hợp khác mà WebView có thể giúp là nếu ứng dụng của bạn cung cấp dữ liệu cho người dùng luôn đòi hỏi kết nối Internet để truy xuất dữ liệu, chẳng hạn như email. Trong trường hợp này, bạn có thể thấy rằng dễ dàng hơn trong việc xây dựng WebView trong ứng dụng Android của mình để hiển thị trang web với tất cả dữ liệu người dùng chứ không phải thực hiện yêu cầu mạng, sau đó phân tích cú pháp dữ liệu và hiển thị nó trong bố cục Android. Thay vào đó, bạn có thể thiết kế một trang web được thiết kế riêng cho các thiết bị Android và sau đó triển khai WebView trong ứng dụng Android của bạn để tải trang web.
Bài viết này cho bạn thấy làm thế nào để bắt đầu với WebView và làm thế nào để thực hiện một số thứ bổ sung, chẳng hạn như xử lý điều hướng trang và ràng buộc JavaScript từ trang web của bạn đến mã phía khách hàng trong ứng dụng Android của bạn.
I. Thêm WebView vào Ứng dụng của bạn Để thêm một WebView vào ứng dụng của bạn, chỉ cần bao gồm phần tử trong layout activity của bạn. Ví dụ: đây là một layout trong đó WebView làm đầy màn hình:
II. Sử dụng JavaScript trong WebView Nếu trang web bạn dự định load trong WebView sử dụng JavaScript, bạn phải enable JavaScript cho WebView. Khi đã bật JavaScript, bạn cũng có thể tạo ra các interface giữa mã ứng dụng và mã JavaScript của bạn.
Enabling JavaScript JavaScript mặc định được tắt trong WebView. Bạn có thể kích hoạt nó thông qua WebSettings đính kèm WebView của bạn. Bạn có thể lấy WebSettings với getSettings [], sau đó kích hoạt JavaScript với setJavaScriptEnabled []. Ví dụ:
Bind mã JavaScript vào mã Android Khi phát triển một ứng dụng web được thiết kế riêng cho WebView trong ứng dụng Android của bạn, bạn có thể tạo các Interface giữa mã JavaScript của bạn và mã Android phía máy khách. Ví dụ: mã JavaScript của bạn có thể gọi một phương pháp trong mã Android của bạn để hiển thị hộp thoại, thay vì sử dụng chức năng alert [] của JavaScript. Để bind interface giữa mã JavaScript và Android của bạn, hãy gọi addJavascriptInterface [], truyền nó cho một instance để liên kết với JavaScript của bạn và một tên interface mà JavaScript của bạn có thể gọi để truy cập vào class. Ví dụ: bạn có thể bao gồm class sau trong ứng dụng Android của bạn:
III. Xử lý Điều hướng Trang Thông thường, trình duyệt web mặc định sẽ mở ra và tải URL đích. Tuy nhiên, bạn có thể ghi đè lên hành vi này cho WebView, do đó các liên kết mở trong WebView của bạn. Sau đó, bạn có thể cho phép người dùng điều hướng lùi và chuyển tiếp qua lịch sử trang web của họ được duy trì bởi WebView của bạn. Để mở các liên kết được nhấp bởi người dùng, chỉ cần cung cấp một WebViewClient cho WebView của bạn, sử dụng setWebViewClient []. Ví dụ: Nếu bạn muốn kiểm soát nhiều hơn nơi tải liên kết được nhấp, hãy tạo WebViewClient của riêng bạn để ghi đè phương thức shouldOverrideUrlLoading []. Ví dụ: Sau đó tạo một instance của WebViewClient mới này cho WebView: Bây giờ khi người dùng nhấp vào liên kết, hệ thống sẽ gọi hàm shouldOverrideUrlLoading [], kiểm tra xem máy chủ URL có khớp với một miền cụ thể hay không [như đã định nghĩa ở trên]. Nếu so khớp, thì phương thức trả về false để không ghi đè lên việc tải URL [nó cho phép WebView tải URL như thường lệ]. Nếu máy chủ URL không khớp, thì một Intent được tạo để khởi chạy Hoạt động mặc định để xử lý URL [có thể giải quyết cho trình duyệt web mặc định của người dùng].
IV. Điều hướng lịch sử trang web Khi WebView ghi đè URL, nó sẽ tự động tích lũy một lịch sử các trang web đã truy cập. Bạn có thể điều hướng ngược và chuyển tiếp qua lịch sử với goBack [] và goForward []. Phương thức canGoBack [] trả về true nếu có lịch sử trang web thực sự cho người 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, sau đó một khi người dùng đến cuối của lịch sử, goBack [] hoặc goForward [] không làm gì cả.
All rights reserved