利用android中的webview控件访问网页
大家可能又会疑惑了。因为在android中如果默认的话,我们是看不到系统中的webview控件的,但是,你可以敲出来,xml文件是不会排斥的。所以,今天我们来看一看如何利用webview来访问网页。
我们需要一个webview.xml文件,
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="this is a webview" />
<WebView
android:id="@+id/webView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
这里我们弄好了控件爱你,接下来我们来写代码:
当然这里我们有两种方式来访问网页:
一种是就在java文件里面通过StringBuffer的追加来写网页代码
另一种是直接在资源文件里面引入一个网页文件,这样,我们就可以得到网页资源,然后引用。
这里我们先将第一种:
建立一个java文件:
代码如下:
package cn.web.view;
import java.io.UTFDataFormatException;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class WebViewActivity extends Activity {
/** Called when the activity is first created. */
private WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// to get the webview
mWebView=(WebView)findViewById(R.id.webView);
StringBuffer sb=new StringBuffer();
sb.append("<html>");
sb.append("<body>hello:weView!</body>");
sb.append("</html>");
mWebView.loadDataWithBaseURL(null, sb.toString(), "text/html", "utf-8", null);
}
}
效果如下:
当然,这里我们还有第二种方式:
Xml里面的代码跟第一种一样,主要是一丁点代码的问题:
代码如下:
package cn.web.view;
import java.io.UTFDataFormatException;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
public class WebViewActivity extends Activity {
/** Called when the activity is first created. */
private WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// to get the webview
mWebView=(WebView)findViewById(R.id.webView);
}
//在这里我们需要去重写按下键这个方法,为了去扑捉用户的动作
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_SEARCH){
mWebView.loadUrl("http://www.baidu.com");
return true;
}
return super.onKeyDown(keyCode, event);
}
}
这里最重要的是不要忘记在配置文件里面添加权限:
<uses-permission android:name="android.permission.INTERNET"/>
第三种呢?就是经一个html页面导进我们熟知的assets目录下,这样,我们就可以得到assetMananage来得到网页信息啦!
代码如下:
package cn.zuxia.android.app;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.R.string;
import android.app.Activity;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
public class WebViewTestActivity extends Activity {
/** Called when the activity is first created. */
//定义WebView控件,在当前应用中加载网页
private WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView=(WebView) findViewById(R.id.webView);
//使用当前应用上下文得到AssetManager对象
AssetManager assetManager=this.getAssets();
try {
InputStream inputStream=assetManager.open("index.html");
BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
//定义StringBuffer对象,存放所有的页面数据
StringBuffer stringBuffer=new StringBuffer();
String str=null;
while((str=br.readLine())!=null){
stringBuffer.append(str+"\n");
}
br.close();
inputStream.close();
mWebView.loadDataWithBaseURL(null, stringBuffer.toString(), "text/html", "utf-8", null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
效果图如下:
over!