新浪微博Android客户端开发视频中OAuth认证要使用WebView作为嵌入浏览器进行OAuth认证,所以现在我也把代码贴出来一下

首先是布局文件,webview.xml:
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:orientation="vertical"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. >

  6. <WebView android:layout_width="fill_parent"
  7. android:layout_height="fill_parent"
  8. android:id="@+id/wbView"/>

  9. </LinearLayout>
复制代码 布局文件比较简单,就一个WebView 控件。

Activity:
  1. package com.iweibo;

  2. import com.iweibo.oauth.MyOAuth;
  3. import com.iweibo.util.JavascriptInterface;
  4. import android.app.Activity;
  5. import android.app.ProgressDialog;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.os.Handler;
  9. import android.webkit.WebChromeClient;
  10. import android.webkit.WebView;
  11. import android.webkit.WebViewClient;
  12. import android.widget.Toast;



  13. /**
  14. *
  15. * @author touch Android
  16. * @version 1.0
  17. * http://bbs.droidstouch.com
  18. */
  19. public class WebViewActivity extends Activity {




  20. private WebView wbView;
  21. private String url=null;
  22. private Handler handler;
  23. private ProgressDialog pd;


  24. public void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.webview);

  27. url= MyOAuth.getAuthenticationURL();

  28. System.out.println("url" +url);

  29. if(null==url)
  30. {
  31. Toast.makeText(this, "授权地址为空", 3000).show();
  32. return ;
  33. }
  34. init();

  35. loadUrl(wbView, url);

  36. handler = new Handler()
  37. {
  38. public void handleMessage(android.os.Message msg)
  39. {
  40. switch(msg.what)
  41. {
  42. case 0:
  43. pd.show();
  44. break;

  45. case 1:
  46. pd.dismiss();
  47. break;
  48. }
  49. };
  50. };
  51. }



  52. private void init()
  53. {

  54. wbView = (WebView) this.findViewById(R.id.wbView);

  55. //设置可用Javascript脚本
  56. wbView.getSettings().setJavaScriptEnabled(true);
  57. wbView.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上


  58. wbView.addJavascriptInterface(new JavascriptInterface(), "Methods");

  59. wbView.setWebViewClient(new WebViewClient()
  60. {
  61. public boolean shouldOverrideUrlLoading(WebView view, String url)
  62. {
  63. loadUrl(view, url);
  64. return true;
  65. }

  66. @Override
  67. public void onPageFinished(WebView view, String url)
  68. {
  69. if(url.equals("http://api.t.sina.com.cn/oauth/authorize"))
  70. {
  71. view.loadUrl("javascript:window.Methods.getPin('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

  72. Intent intent = new Intent(WebViewActivity.this, AccessTokenActivity.class);
  73. startActivity(intent);

  74. }

  75. super.onPageFinished(view, url);
  76. }

  77. });



  78. wbView.setWebChromeClient(new WebChromeClient(){
  79. public void onProgressChanged(WebView view, int newProgress)
  80. {

  81. if(newProgress == 100)// 全部加载完毕
  82. {
  83. handler.sendEmptyMessage(1);
  84. }
  85. super.onProgressChanged(view, newProgress);
  86. }
  87. });


  88. pd = new ProgressDialog(this);
  89. pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  90. pd.setMessage("正在载入");
  91. }


  92. private void loadUrl(final WebView view,final String url)
  93. {
  94. new Thread()
  95. {

  96. public void run() {

  97. handler.sendEmptyMessage(0);
  98. view.loadUrl(url);
  99. };
  100. }.start();
  101. }



  102. }




更多相关文章

  1. android中webView JS调用Android的方法、webView的下拉刷新(Swipe
  2. RelativeLayout的布局学习(部分知识点)
  3. Android使用代码实现关机/重启
  4. Android 7.0 使用FileProvider 在应用间共享文件
  5. android 实用sax 读取xml文件内容
  6. Android 打开相机、相册获取图片文件,支持Android 9.0系统
  7. 解决 android 在sd卡新建文件后需要重启才能找到
  8. Android遍历文件Listfile返回值为null问题解决方法适用Android8.
  9. Android上传文件至PHP服务器

随机推荐

  1. Go:fmt.Scanln在控制台获取用户输入的值
  2. Elasticsearch—用logstash增量导入Mysql
  3. spark与kafka集成
  4. 一文读懂 TS 中 Object, object, {} 类型
  5. Kafka Consumer消费能力较低时的解决方案
  6. 实力解剖一枚挖矿脚本,风骚操作亮瞎双眼
  7. BTree索引/Hash索引
  8. 如何让 linux 包转发达到 40万pps,尝试中
  9. OceanBase、X-DB、POLARDB 分布式关系型
  10. Netfliter状态跟踪之动态协议的实现浅析(t