Android WebView 实例

来源:互联网 发布:dr3插件mac安装 编辑:程序博客网 时间:2024/04/28 23:47
新浪微博Android客户端开发视频中OAuth认证要使用WebView作为嵌入浏览器进行OAuth认证,所以现在我也把代码贴出来一下

首先是布局文件,webview.xml:

[html] view plaincopy
  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.   
  7. <WebView android:layout_width="fill_parent"  
  8. android:layout_height="fill_parent"  
  9. android:id="@+id/wbView"/>  
  10.   
  11. </LinearLayout>  

布局文件比较简单,就一个WebView 控件。

Activity:

[java] view plaincopy
  1. package com.iweibo;  
  2.   
  3. import com.iweibo.oauth.MyOAuth;  
  4. import com.iweibo.util.JavascriptInterface;  
  5. import android.app.Activity;  
  6. import android.app.ProgressDialog;  
  7. import android.content.Intent;  
  8. import android.os.Bundle;  
  9. import android.os.Handler;  
  10. import android.webkit.WebChromeClient;  
  11. import android.webkit.WebView;  
  12. import android.webkit.WebViewClient;  
  13. import android.widget.Toast;  
  14.   
  15.   
  16.   
  17. /** 
  18.  
  19. * @author touch Android 
  20. * @version 1.0 
  21. * http://bbs.droidstouch.com 
  22. */  
  23. public class WebViewActivity extends Activity {  
  24.   
  25.   
  26.   
  27.   
  28. private WebView wbView;  
  29. private String url=null;  
  30. private Handler handler;  
  31. private ProgressDialog pd;  
  32.   
  33.   
  34. public void onCreate(Bundle savedInstanceState) {  
  35. super.onCreate(savedInstanceState);  
  36. setContentView(R.layout.webview);  
  37.   
  38. url= MyOAuth.getAuthenticationURL();  
  39.   
  40. System.out.println("url" +url);  
  41.   
  42. if(null==url)  
  43. {  
  44. Toast.makeText(this"授权地址为空"3000).show();  
  45. return ;  
  46. }  
  47. init();  
  48.   
  49. loadUrl(wbView, url);  
  50.   
  51. handler = new Handler()  
  52. {  
  53. public void handleMessage(android.os.Message msg)  
  54. {  
  55. switch(msg.what)  
  56. {  
  57. case 0:  
  58. pd.show();  
  59. break;  
  60.   
  61. case 1:  
  62. pd.dismiss();  
  63. break;   
  64. }  
  65. };  
  66. };  
  67. }  
  68.   
  69.   
  70.   
  71. private void init()  
  72. {  
  73.   
  74. wbView = (WebView) this.findViewById(R.id.wbView);  
  75.   
  76. //设置可用Javascript脚本  
  77. wbView.getSettings().setJavaScriptEnabled(true);  
  78. wbView.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上   
  79.   
  80.   
  81. wbView.addJavascriptInterface(new JavascriptInterface(), "Methods");  
  82.   
  83. wbView.setWebViewClient(new WebViewClient()  
  84. {  
  85. public boolean shouldOverrideUrlLoading(WebView view, String url)  
  86. {  
  87. loadUrl(view, url);  
  88. return true;  
  89. }  
  90.   
  91. @Override  
  92. public void onPageFinished(WebView view, String url)  
  93. {  
  94. if(url.equals("http://api.t.sina.com.cn/oauth/authorize"))  
  95. {  
  96. view.loadUrl("javascript:window.Methods.getPin('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");  
  97.   
  98. Intent intent = new Intent(WebViewActivity.this, AccessTokenActivity.class);  
  99. startActivity(intent);  
  100.   
  101. }  
  102.   
  103. super.onPageFinished(view, url);  
  104. }  
  105.   
  106. });  
  107.   
  108.   
  109.   
  110. wbView.setWebChromeClient(new WebChromeClient(){  
  111. public void onProgressChanged(WebView view, int newProgress)  
  112. {  
  113.   
  114. if(newProgress == 100)// 全部加载完毕  
  115. {  
  116. handler.sendEmptyMessage(1);  
  117. }  
  118. super.onProgressChanged(view, newProgress);  
  119. }  
  120. });  
  121.   
  122.   
  123. pd = new ProgressDialog(this);  
  124. pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);  
  125. pd.setMessage("正在载入");  
  126. }  
  127.   
  128.   
  129. private void loadUrl(final WebView view,final String url)  
  130. {  
  131. new Thread()  
  132. {  
  133.   
  134. public void run() {  
  135.   
  136. handler.sendEmptyMessage(0);  
  137. view.loadUrl(url);  
  138. };  
  139. }.start();  
  140. }  
  141.   
  142.   
  143.   
  144. }  

0 0
原创粉丝点击