1. 源起

    最近在弄Google登录,Google登录要求手机上必须按照Google Play Service,有些手机比如小米,没有Google Play Servcie,因此,有必要实现一个webview的登录方式。
    Google的跳转由Server端进行了配置,我们只需要请求一个URL,跳转到Google 的授权页面,授权后,跳转到Server那边,Server取得用户信息,然后将用户信息返回到一个地址上。最终只需要解析返回的页面结果即可。

2. 代码实现

    permission
    <uses-permission android:name="android.permission.INTERNET" />

    
清空cookie
    try {
        CookieSyncManager.createInstance(this);
        CookieManager.getInstance().removeAllCookie();
    } catch (Exception e) {
        Log.d("Google Login", "Clear cookie failed");
    }

  
  最终的页面检测
    WebView webview = (WebView) findViewById(R.id.login);
    webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        if (url.contains(succeedUrl))
            Log.d("Google Login", "onPageFinished, url = " + url);
        }
    });
    webview.loadUrl(requestUrl);
    
页面内容的获取,需要用JS来调用JAVA代码
    class Handler {
        
@JavascriptInterface  // api level17要加这个,不加的话也不报错,就是不调用,折腾了1个半小时啊,泪流满面。
        public void show(String data) {
            Log.d("Google Login", "handler, show, data = " + data);
            System.out.println("data = " + data);
        }
    }

    webview.getSettings().setJavaScriptEnabled(true); // 设置JS可用
    webview.addJavascriptInterface(new Handler(), "handler"); // 注册Handler对象,并且命名为handler

    public void onPageFinished(WebView view, String url) {
        if (url.contains(succeedUrl))
            Log.d("Google Login", "onPageFinished, url = " + url);
            view.loadUrl("javascript:window.handler.show(document.body.innerHTML);"); 
        }
    });


3. 参考资料

    Android中如何获得webView中的内容    
http://veikr.com/201106/android_webview_content-html.html

[Android] 使用Webview进行OAUTH的更多相关文章

  1. Android中webView和网页的交互

     Android中webView和网页的交互 Android中webView跟网页的交互式通过JavaScript进行的.具体步骤: 1.创建JavaScript,在点击的时候调用JavaScript ...

  2. Android 显示 WebView ,加载URL 时,向webview的 header 里面传递参数

    1.主要布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and ...

  3. Android中Webview使用自定义的javascript进行回调

    先说为什么需要讨论这个问题. 现在很多的手机应用,都可能会直接嵌入一个web页面.这样做的好处:一个是功能更新方便,维护起来容易,只需要维护服务器的页面即可,不需要更新客户端:另一个是功能通用,不仅a ...

  4. android使用Webview上传图片

    package com.example.webview; import java.io.File; import android.net.Uri;import android.os.Bundle;im ...

  5. Android之 -WebView实现离线缓存阅读

    前言 本篇博客要实现的是一个离线下载和离线阅读的功能,这是很多阅读类app都常见的一个功能,典型的应用就是网易新闻.什么是离线下载?其实这个概念是比较模糊,是离线之后下载呢,还是下载之后离线,但稍微有 ...

  6. 在Android的webview中定做js的alert,confirm和prompt对话框的方法

    在Android的webview中定制js的alert,confirm和prompt对话框的方法 http://618119.com/archives/2010/12/20/199.html 1.首先 ...

  7. Android 响应webview中图片的点击事件

    最近碰到个新需求需要点击webview中的图片进行放大显示. 整理了下思路,想到了下面的一个可行的方案. 方案思路, 1.在点击图片的时候调用本地的java方法并给出响应的图片地址 2.本地获得图片地 ...

  8. android利用WebView实现浏览器的封装

    android提供了封装浏览器的接口,可以让开发者利用自己的view显示网页内容.今天又实现研究了一下,利用WebView显示浏览器内容,还可以利用 WebViewClient显示自己需要的内容. 参 ...

  9. [原][Android]All WebView methods must be called on the same thread.

    问题 webView调用JS出错. class TestJS {         ......         public TestJS(){         }                   ...

随机推荐

  1. jQuery相关知识

    1.jQuery中$符号有何作用? $作为jQuery的别名,如$(document).ready() 即是 jQuery(document).ready() 2.jQuery选择器有哪几种? 基本选 ...

  2. OpenCV学习 1:OpenCV安装与第一个图像显示程序

    原创作品,转载请注明出处 为了提升逼格,决定学下OpenCV,想想如果可以做人脸识别,定点降落,让飞机跟着自己飞..想想都有点小激动.这只是想的,能不能学会还不知道..哈..      1:先下载:h ...

  3. WebRTC 音视频开发

    WebRTC 音视频开发 webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译 ...

  4. Oracle EBS-SQL (SYS-1): sysadmin_用户职责查询.sql

    select fu.user_name 用户名, fu.description 用户说明, frv.RESPONSIBILITY_NAME 职责名称, REQUEST_GROUP_NAME 报表组, ...

  5. log4j.xml 为什么要使用SLF4J而不是Log4J

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SY ...

  6. hadoop源码eclipse环境搭建-源码获取阶段

    就目前了解,结合eclipse阅读和编译hadoop源码用两种方式:svn和git. 根据官方指南http://wiki.apache.org/hadoop/EclipseEnvironment 推荐 ...

  7. java学习之匿名内部类与包装类

    匿名内部类: 所谓匿名内部类,顾名思义指的就是定义在类内部的匿名类,现有的spring框架开发以及java图形界面都经常用到匿名内部类. 下面来看一个代码: interface A{ public v ...

  8. js的replace的用法;

    obj.replace("需要替换的字符串","替换后的字符串")

  9. var 与function的权重浅析

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Android中的数据存储

    Android中的数据存储主要分为三种基本方法: 1.利用shared preferences存储一些轻量级的键值对数据. 2.传统文件系统. 3.利用SQLite的数据库管理系统. 对SharedP ...