您的位置:首页 > 移动开发

Android中利用webView访问网页

2013-12-18 23:14 323 查看
利用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!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: