2016-04-30 24 views
7

मेरे एंड्रॉइड एप्लिकेशन में मुझे WebView के अंदर तीसरे पक्ष के पंजीकरण फॉर्म को प्रदर्शित करने की आवश्यकता है। दुर्भाग्यवश, मुझे एंड्रॉइड संस्करण < 4.3 का समर्थन करने की आवश्यकता है, जहां आप वेबसाइट से कनेक्ट करते समय SSL हैंडशेक त्रुटि प्राप्त करते हैं। हालांकि, मैं कस्टम एसएसएल संदर्भ के साथ एंड्रॉइड 4.1+ पर सीधे अनुरोध करने में सक्षम था, जिसमें टीएलएस 1.1 स्पष्ट रूप से सक्षम है, लेकिन मैं इस एसएसएल संदर्भ को मेरे WebView में पास नहीं कर सकता। मैं कस्टम WebViewClientएंड्रॉइड के लिए वेबव्यू में टीएलएस 1.1, 1.2 <= 4.3

private WebViewClient webViewClient = new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView webView, String url) { 
     if (presenter != null) { 
      presenter.onLoadFinished(); 
     } 
    } 

    @Override 
    public void onReceivedError(WebView webView, 
           WebResourceRequest request, 
           WebResourceError error) { 
     if (presenter != null) { 
      presenter.onLoadError(); 
     } 
    } 

    @Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){ 
     handler.proceed(); 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView webView, String url) { 
       Request request = new Request.Builder().url(url).build(); 
    final Handler handler = new Handler(mContext.getMainLooper()); 
    //mOkHttpClient is an OkHttpClient with my custom SSLContext which has TLS 1.1 and TLS 1.2 enabled 
    mOkHttpClient.newCall(request).enqueue(new Callback() { 
      @Override 
      public void onFailure(Call call, IOException e) { 

      } 

      @Override 
      public void onResponse(Call call, final okhttp3.Response response) throws IOException { 
       handler.post(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          webView.loadDataWithBaseURL(
            null, response.body().string(), "text/html", "utf-8", null); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
        } 
       }); 
      } 
     }); 
    } 

}; 

करने की कोशिश की लेकिन वह shouldOverrideUrlLoading के बाद से काम नहीं किया पोस्ट अनुरोध पर बुलाया नहीं है।

क्या यह काम करने का कोई तरीका है (शायद WebView पर कुछ विकल्प)? किसी भी मदद की सराहना की है।

उत्तर

4

मुझे यकीन नहीं है कि क्या आप इसे वर्तमान वेब व्यू के साथ काम कर सकते हैं लेकिन मैं आपको वेब व्यू को प्रतिस्थापित करने के लिए https://crosswalk-project.org/documentation/android.html पर एक नज़र डालने की सलाह दूंगा।

यह क्रोम के नवीनतम संस्करण और पर बनाया गया है, आपको एंड्रॉइड के उस संस्करण के साथ समस्या नहीं होगी, जिस पर उपयोगकर्ता चल रहा है।

मुझे यकीन है कि अन्य विकल्प भी हैं, लेकिन यह वह है जिसे मैं काम के लिए उपयोग कर रहा हूं और मुझे काम पता है।

आपको शुभकामनाएं।

+0

धन्यवाद, यह बहुत अच्छी तरह से काम करता है। – satorikomeiji

+0

https://crosswalk-project.org/documentation/android/embedding_crosswalk.html –

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