Google Play应用市场提交应用审核,出现因WebViewClient.onReceivedSslError问题导致拒绝通过。

Google Paly给出的详情地址:support.google.com/faqs/answer…

处理起来其实也相对简单,主要是针对用到WebViewClient对象重写onReceivedSslError()方法。

如:

@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引入的外部库,需要统一核查。

通过gradle dependencies引入的外部库,通常是以aar形式存在,项目构建过程中,最终都会将aar中的有效部分,如jar文件,拷贝到当前项目构建目录,参与整体构建过程。

于是,构建完成后,可以通过命令直接查找项目目录下的jar文件,将其中的WebViewClient相关类都找到,并逐一排查,对于涉及到的自己的独立jar文件或gradle dependencies引入的外部库,可以自行修改,对于外部第三方(如QQ,微博等相关的登录分享库等)的库,可以考虑是否需要升级新的版本(新的版本很可能已经解决,因为第三方也会收到同样的问题或有人已经反馈过),或者反馈给第三方等方式解决。

使用搜索命令:
find . -name '*.jar' -exec zipgrep -i WebViewClient {} \;
输出结果为:

...
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()方法。

作者:HappyCorn
链接:https://juejin.im/post/5cb1416a6fb9a0685727dd92
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

解决Google Play审核中的WebViewClient.onReceivedSslError问题的更多相关文章

  1. 【已解决】Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8

    [问题] 折腾: [已解决]Android ADT中增大AVD内存后无法启动:emulator failed to allocate memory 8 过程中,增大对应AVD的内存为2G后,结果无法启 ...

  2. 解决GOOGLE不能用的办法

    解决GOOGLE不能用的办法 首先平时用用百度还是足够了,但是说实话,百度在进行一些尝试搜索时真的没GOOGLE好用,经常找到一大堆广告,却不是自己想要的,比如搜索里面的双引号.and.site.fi ...

  3. 我的Android进阶之旅------>如何解决Android 5.0中出现的警告: Service Intent must be explicit:

    我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...

  4. Android App在Google App Store中搜不到

    情景:Android App在Google App Store上架成功,三星手机可以在Google App Store中搜索到,但是三星tablet却无法在Google App Store中搜索到,目 ...

  5. 我的Android进阶之旅------>怎样解决Android 5.0中出现的警告: Service Intent must be explicit:

    我的Android进阶之旅-->怎样解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...

  6. Get your site working on Google Search Console , 在 Google Search Console中运行您的网站, Google Search Console

    1 1 https://support.google.com/webmasters/topic/4564315? Search Console Help SEARCH CONSOLEHELP FORU ...

  7. php大力力 [051节] 支付宝支付.申请支付资质,等待审核中

    https://beecloud.cn/doc/payapply/?index=6 支付宝支付申请支付资质 一.注册支付宝用户 在支付宝官网注册成为用户 二.签约对应支付产品 应用集成支付宝支付,需要 ...

  8. Google Chrome浏览器中如何使用命令

    Google Chrome浏览器中如何使用命令 | 浏览:2974 | 更新:2014-02-23 23:12 | 标签:chrome 1 2 3 分步阅读 Google Chrome浏览器有很多的特 ...

  9. 解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题

    解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题 本文的实践来源是参照了两个帖子完成的: http://dis ...

随机推荐

  1. HTTP协议简单记录

    http协议的格式 1. 首行 2. 头 3. 空行 4. 体 http请求头 #Referer 请求来自哪里,如果是在http://www.baidu.com上点击链接发出的请求,那么Referer ...

  2. Oracle数据库逻辑迁移之数据泵的注意事项

    环境:数据迁移,版本 11.2.0.4 -> 12.2.0.1 思考: 对于DBA而言,常用物理方式的迁移,物理迁移的优势不必多说,使用这种方式不必担心对象前后不一致的情况,而这往往也解决了不懂 ...

  3. win10汇编环境的搭建

    第一步:下载DOSBox0.74-win32-installer 可以去官网:http://www.dosbox.com/ 或者链接:https://pan.baidu.com/s/1UA77qTLO ...

  4. 嵌入Python系列 | 调用Python模块中无参数函数

    开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...

  5. Python和Java的硬盘夜话

    这是一个程序员的电脑硬盘,在一个叫做"学习"的目录下曾经生活着两个小程序,一个叫做Hello.java,即Java小子:另外一个叫做hello.c ,也就是C老头儿. C老头儿的命 ...

  6. 【转】数据库事务ACID以及事务隔离

      本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...

  7. Nginx安装及配置

    Nginx是一款速度快,功能强大的http以及反向代理服务器,经过简单的配置之后即可以用来托管页面. 不幸的是,和很多其他系统管理工具一样,相关的原理教程和配置说明文档都很少.虽然官方提供了一个wik ...

  8. flock SUSE/RHEL

    Util-linux-2.26 Util-linux 软件包其它实用程序.包括处理文件系统.控制台.分区以及消息等工具. 大概编译时间:1.3 SBU 需要磁盘空间:137 MB 6.65.1. FH ...

  9. 微信小程序基于第三方websocket的服务器端部署

    微信小程序后台请求越来越严格 1.request要求用https 2.websocket要求用wss 3.测试后发现websocket只能走433端口 作为.net开发,websocket又是使用的第 ...

  10. IntelliJ IDEA 2018.1.2 安装及汉化教程(附:下载地址)

    附:安装包及汉化包下载地址  链接:https://pan.baidu.com/s/1ysxtVH_gnBm0QnnqB5mluQ 密码: 9pqd 1.安装步骤: 选择安装地址:可以默认.本人安装在 ...