2012-11-09 9 views
5

में उपयोग किए गए HTTP शीर्षलेख पर कोई प्रभाव नहीं पड़ता है एंड्रॉइड ऐप के HTTP अनुरोध में उपयोगकर्ता-एजेंट स्ट्रिंग को बदलने का प्रयास कर रहा है। मैंने इसे वायरसहार्क और एमुलेटर के साथ एक साथ परीक्षण किया है, और देखा है कि हालांकि मैंने वेबव्यू में उपयोगकर्ता सामग्री स्ट्रिंग सेट की है, संबंधित loadUrl अनुरोध इस उपयोगकर्ता-एजेंट स्ट्रिंग का उपयोग नहीं करता है। इसके बजाय मैं wireshark कब्जा में Dalvik useragent स्ट्रिंग देखते हैं। यहां कोड सार है। कोई विचार? या क्या एम्यूलेटर इसका समर्थन नहीं करता है?एंड्रॉइड वेबव्यू में setUserAgentString का भार लोडर()

@Override 
public void run() { 
    assert(context != null); 

    ... 
    ... 
    webView = new WebView(context); 
    ... 
    String defaultUserAgent = "betaUAteststring"; 


    // Clear per-application caches etc 
    webView.clearCache(true); 
    webView.clearHistory(); 
    webView.getSettings().setAppCacheEnabled(false); 
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    webView.getSettings().setJavaScriptEnabled(true); 


    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
     .... 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     .. 
     } 

     @Override 
     public void onLoadResource(WebView view, String url) { 
     ... 
     } 
    }); 


    // Start loading 


    webView.getSettings().setUserAgentString(defaultUserAgent); 
    String setUA = webView.getSettings().getUserAgentString(); 
    //--> logging here shows the correct user agent, so the webview does accept the value 
    // However the following statement does not result in an http request with the webviews user agent 
    webView.loadUrl(url); 

    //Alternative doesn't help either (and shouldn't according to javadoc) 

    //Map<String,String> headerMap = new HashMap<String,String>(); 
    //headerMap.put("User-Agent","uaTestInAMap");   
    //webView.loadUrl(url, headerMap); 
} 

उत्तर

1

मेरे अपने प्रश्न का उत्तर दें। ऐसा प्रतीत होता है कि किसी भी कारण से एम्यूलेटर उपयोगकर्ता एजेंट स्ट्रिंग को वेबव्यू से नहीं ले रहा है। हालांकि मुझे इसके कारण का पता नहीं चला है। कोड एक असली डिवाइस पर ठीक काम करता है।

0

आप खुले यूआरएल (डिफ़ॉल्ट ब्राउज़र लॉन्च) पर डिफ़ॉल्ट एंड्रॉइड व्यवहार को ओवरराइड करना याद करते हैं। अपने अनुकूलित ब्राउज़र का उपयोग करने के navitage लिए, आप केवल है WebView

करने के लिए एक WebViewClient संलग्न करने के लिए

अपने कोड में निम्न पंक्ति जोड़कर प्राप्त है कि:

webView.setWebViewClient(new WebViewClient()); 

चीयर्स, रॉड्रिगो

+0

मैं मेरा मानना ​​है कि मैं इसे "webView.setWebViewClient (नया WebViewClient() ....." में कर रहा हूं – damcify

संबंधित मुद्दे