上一节给大家讲解通过调用 android 系统自带的浏览器进行授权认证的,使用该种方式能很容易的完成认证,但是该种方式有个弊端,也就是如果使用第三方的浏览器如 UC 、天天等,输入完 QQ 账号信息点击“授权”后并不能再次跳转到 MainActivity ,导致我们的认证失败。这个问题应该是非常严重的问题,因为大部分用户都会选择第三方的浏览器作为默认的浏览器。本次给大家讲解自动获取验证码的第二种解决方案,克服上一种方法的缺陷。
第二种解决方案的主角就是我们的 WevView 控件,我们可以使用 WebView 控件来进行浏览器的操作,而不使用系统或者第三方的浏览器。
1. 首先创建一个 Activity ,命名为 WebViewActivity ,该 Activity 种只包含一个 WevView 控件:
2. 在 MainActivity 种添加一个 Button ,用于启动 WebViewActivity :
3. 给 WebViewActivity 的 onCreate 添加如下代码,进行浏览器的初始化:
此时如果我们运行模拟器,点击按钮启动 WebViewActivity 按钮后,运行效果和启动浏览器差不多,我们输入 QQ 账户信息,点击“授权”,如果 callback 为空,则 Activity 会显示授权码。
4. 下面我们需要处理的就是如何自动获取授权码。我们知道 WebView 是支持 JavaScript ,我们可以通过 JavaScript 进行授权码的获去,在 onCreate() 方法中添加如下代码
其中JavaScriptInterface类是进行js 处理的类:
getVerifier() 方法是通过正则表达式进行授权码的查找,该正则表达式是根据腾讯微博开放平台返回验证码的 html源文件进行设置:
至此我们就完成了如何通过WebView控件获取验证码的方法,解决了上一节的缺陷。
课程下载地址: http://u.115.com/file/e60px8bk
文档下载地址: http://download.csdn.net/source/3437652
源码下载地址: http://u.115.com/file/aq2vc2re