6

Tôi đang cố gắng phát triển ứng dụng trình duyệt Android sử dụng WebView cho phép người dùng truy cập nội dung từ giao thức tùy chỉnh. Giao thức tùy chỉnh có thể là foobar: //Trình xử lý giao thức WebView Android

Tôi muốn chặn tất cả các yêu cầu đối với giao thức tùy chỉnh này. Điều này có nghĩa:

  1. GET yêu cầu
  2. yêu cầu POST

và tôi cần để có thể giao các kết quả của các hoạt động này trở lại WebView.

Yêu cầu GET có thể được xử lý bằng cách sử dụng shouldInterceptRequest (có sẵn từ cấp API 11).

Bây giờ vấn đề của tôi là: Làm cách nào để tôi có thể chấp nhận và xử lý các yêu cầu POST?

Gần như cùng một câu hỏi đã được yêu cầu herehere, tuy nhiên không tìm thấy giải pháp nào cho vấn đề của họ.

+0

bạn đã thử ghi đè tải của url chưa? – Raykud

Trả lời

0

có bạn đã cố gắng ghi đè các bài phương pháp làm một cái gì đó như:

private class ViewerWebViewClient extends WebViewClient { 

     @Override 
     public void onPageFinished(WebView view, String url) { 

     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, final String url) { 
      if(!url.contains(MYKEYWORD)) 
       { 
       Toast.makeText(getActivity(),POSTING, Toast.LENGTH_LONG).show(); 
       return true; 
       } 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 

của nó chỉ là một ý tưởng. có thể giúp bạn.

+2

Điều này rất hữu ích nếu người dùng đang điều hướng đến một số URL và rời khỏi trang hiện tại. Sau đó tôi có thể sử dụng WebView.loadUrl (...) hoặc .post (...). Tuy nhiên, nếu trình duyệt chỉ thực hiện yêu cầu nền (nghĩ javascript) thì tôi không thể trả lại nội dung cho nó. shouldInterceptRequest có thể xử lý các yêu cầu GET và trả về nội dung, nhưng không thể chặn các yêu cầu POST và nhận dữ liệu POST. Rất tiếc, phương thức của bạn không giải quyết được vấn đề. Cảm ơn bạn đã thử! – foens

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