TLS 1.1,1.2在WebView for android <= 4.3

问题描述:

在我的android应用程序中,我需要在WebView内显示第三方注册表单。不幸的是,我还需要支持Android版本< 4.3,当您连接到网站时,您会遇到SSL握手错误。但是,我可以在自定义SSL上下文中创建具有TLS 1.1的直接请求,但我无法将此上下文传递到我的WebView。我试图使自定义WebViewClientTLS 1.1,1.2在WebView for android <= 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没有工作,没有叫上POST请求。

有没有办法使这项工作(可能一些替代WebView)?任何帮助表示赞赏。

我不确定您是否可以使用当前的WebView,但 我建议您看看:https://crosswalk-project.org/documentation/android.html来替换WebView。

这是建立在最新版本的Chrome和 上的,您将不会遇到用户运行的Android版本问题。

我敢肯定,还有其他的选择,但这是我用来工作,我知道工作。

祝你好运。

+0

谢谢,它工作得很好。 – satorikomeiji

+0

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