6

मैं WebView का उपयोग कर एक एंड्रॉइड ब्राउज़र एप्लिकेशन विकसित करने की कोशिश कर रहा हूं जो उपयोगकर्ताओं को कस्टम प्रोटोकॉल से सामग्री तक पहुंचने में सक्षम बनाता है। कस्टम प्रोटोकॉल foobar हो सकता है: //एंड्रॉइड वेबव्यू प्रोटोकॉल हैंडलर

मैं इस कस्टम प्रोटोकॉल के सभी अनुरोधों को रोकना चाहता हूं। इसका मतलब यह है:

  1. प्राप्त
  2. पोस्ट अनुरोध

का अनुरोध करता है और मैं वापस WebView करने के लिए इन आपरेशन के परिणामों सौंपने के लिए सक्षम होना चाहिए।

जीईटी अनुरोध shouldInterceptRequest (एपीआई स्तर 11 से उपलब्ध) का उपयोग करके संभाला जा सकता है।

अब मेरी समस्या है: मैं POST अनुरोध को कैसे सम्मिलित और संभाल सकता हूं?

लगभग उसी प्रश्न को here और here से पूछा गया है, हालांकि उनकी समस्याओं के लिए कोई समाधान नहीं मिला है।

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); 
     } 
    } 

इसकी सिर्फ एक विचार:

+0

क्या आपने यूआरएल के भार को ओवरराइड करने का प्रयास किया है? – Raykud

उत्तर

0

आप की तरह कुछ कर रही पोस्ट विधि के लिए अधिभावी की कोशिश की है। शायद आपकी मदद कर सकता है।

+2

यह उपयोगी है अगर उपयोगकर्ता कुछ यूआरएल पर जा रहा है और वर्तमान पेज छोड़ देता है। मैं फिर WebView.loadUrl (...) या .post (...) का उपयोग कर सकता हूं। यदि ब्राउज़र सिर्फ पृष्ठभूमि अनुरोध कर रहा है (जावास्क्रिप्ट सोचें) तो मैं इसके लिए सामग्री वापस नहीं कर सकता। चाहिएइंटरसेप्ट रिक्वेस्ट जीईटी अनुरोधों को संभाल सकता है और सामग्री को वापस कर सकता है, लेकिन POST अनुरोधों को रोकना और POST डेटा प्राप्त करना संभव नहीं है। दुर्भाग्यवश आपकी विधि इस मुद्दे को हल नहीं करती है। हालांकि कोशिश करने के लिए धन्यवाद! – foens