2017-03-06 15 views
6

Tôi muốn vô hiệu hóa các liên kết của trang mà tôi đang tải tới đối tượng WebView của mình. Mã của tôi hoạt động hoàn hảo trên trình giả lập của tôi với api 25, nhưng không hoạt động trên điện thoại của tôi với 23 api.Vô hiệu hóa liên kết WebView hoạt động trên trình mô phỏng nhưng không có trên thiết bị

Đây là mã mà khối các liên kết của WebView tôi:

public class NoLinksWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     return true; 
    } 
} 

Tôi đang thiết WebViewClient tôi là một đối tượng kiểu NoLinksWebViewClient. Nó thực hiện thủ thuật trên trình giả lập nhưng không phải trên điện thoại thực của tôi.

Cách giải quyết vấn đề này?

Trả lời

-2

Có phải là tùy chọn javafx.scene.Node.setDisable(boolean arg0) không? Bằng cách đó bạn có thể chặn các yếu tố từ được sử dụng

Documentation

9

Mã của tôi hoạt động hoàn hảo trên giả lập của tôi với api 25, nhưng không phải trên điện thoại của tôi với 23 api.

Tôi nghĩ sự khác biệt quan trọng không phải là giả lập so với thiết bị nhưng các cấp API khác nhau. Nếu bạn nhìn vào các tài liệu trên WebViewClient bạn sẽ nhận thấy rằng có hai tương tự nhưng khác nhau phương pháp:

// since API 24 
boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 
// before API 24, now deprecated 
boolean shouldOverrideUrlLoading(WebView view, String url) 

Như các bạn đã ghi đè chỉ là phương pháp mới hơn, trên công trình Logic mặc định thiết bị cũ của bạn. Điều này xảy ra bởi vì rõ ràng API 23 thiết bị không thể biết rằng trong API 24 phương pháp sẽ được thay thế bằng một phương pháp khác nhau, do đó, nó vẫn gọi phương thức cũ (nay không được chấp nhận).

Tôi tin rằng để khắc phục sự cố, bạn chỉ nên ghi đè cả hai phương pháp này.

3

Câu trả lời ngắn gọn là bạn cần phải ghi đè lên cả hai phương pháp mà trao below.The shouldOverrideUrlLoading (xem WebView, String url) phương pháp bị phản đối trong API 24 và shouldOverrideUrlLoading (xem WebView, yêu cầu WebResourceRequest) phương pháp là được thêm vào API 24.

@SuppressWarnings("deprecation") 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     return true; 
    } 

    @TargetApi(Build.VERSION_CODES.N) 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     return true; 
    } 

Hy vọng những điều này sẽ giúp bạn.

Các vấn đề liên quan