Google Play應用市場提交應用審覈,出現因WebViewClient.onReceivedSslError
問題致使拒絕經過。web
Google Paly給出的詳情地址:support.google.com/faqs/answer…bash
處理起來其實也相對簡單,主要是針對用到WebViewClient
對象重寫onReceivedSslError()
方法。app
如:ide
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
builder.setMessage("SSL認證失敗,是否繼續訪問?"); builder.setPositiveButton("肯定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.proceed(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.cancel(); } }); AlertDialog dialog = builder.create(); dialog.show(); // 上報SslError信息到服務端,以便排查具體問題 CornLog.e(view, handler, error); ... } 複製代碼
項目主工程經過直接搜索WebViewClient
,對應重寫onReceivedSslError()
方法,相對都很簡單,主要問題在,針對項目中直接引入的jar
包和經過gradle dependencies
引入的外部庫,須要統一覈查。post
經過gradle dependencies
引入的外部庫,一般是以aar
形式存在,項目構建過程當中,最終都會將aar
中的有效部分,如jar
文件,拷貝到當前項目構建目錄,參與總體構建過程。gradle
因而,構建完成後,能夠經過命令直接查找項目目錄下的jar
文件,將其中的WebViewClient
相關類都找到,並逐一排查,對於涉及到的本身的獨立jar
文件或gradle dependencies
引入的外部庫,能夠自行修改,對於外部第三方(如QQ,微博等相關的登陸分享庫等)的庫,能夠考慮是否須要升級新的版本(新的版本極可能已經解決,由於第三方也會收到一樣的問題或有人已經反饋過),或者反饋給第三方等方式解決。ui
使用搜索命令:
find . -name '*.jar' -exec zipgrep -i WebViewClient {} \;
輸出結果爲:google
...
com/corn/biz/activity/BbsDetailActivity$LoanWebViewClient.class:Binary file (standard input) matches com/corn/biz/activity/BbsDetailActivity.class:Binary file (standard input) matches com/sina/weibo/sdk/web/client/AuthWebViewClient.class:Binary file (standard input) matches com/sina/weibo/sdk/web/client/BaseWebViewClient.class:Binary file (standard input) matches com/sina/weibo/sdk/web/client/DefaultWebViewClient.class:Binary file (standard input) matches com/sina/weibo/sdk/web/client/ShareWebViewClient.class:Binary file (standard input) matches com/sina/weibo/sdk/web/WeiboSdkWebActivity$1.class:Binary file (standard input) matches com/sina/weibo/sdk/web/WeiboSdkWebActivity$2.class:Binary file (standard input) matches com/sina/weibo/sdk/web/WeiboSdkWebActivity.class:Binary file (standard input) matches sdk/meizu/auth/ui/AuthActivity$1.class:Binary file (standard input) matches sdk/meizu/auth/ui/AuthActivity.class:Binary file (standard input) matches com/cmic/sso/sdk/widget/a$1.class:Binary file (standard input) matches com/cmic/sso/sdk/widget/a.class:Binary file (standard input) matches com/tencent/connect/auth/a$a.class:Binary file (standard input) matches com/tencent/connect/auth/a.class:Binary file (standard input) matches com/tencent/open/c$a.class:Binary file (standard input) matches com/tencent/open/c.class:Binary file (standard input) matches com/tencent/open/TDialog$FbWebViewClient.class:Binary file (standard input) matches com/tencent/open/TDialog.class:Binary file (standard input) matches ... 複製代碼
逐一排查每項涉及到的外部文件,並確認是否已經處理好onReceivedSslError()
方法。spa