Android网络编程实践之旅(四):使用WebView浏览网页

来源:互联网 发布:淘宝客的趋势sina 编辑:程序博客网 时间:2024/06/06 03:45

        WebView控件是对WebKit进行封装的java接口,而WebKit是一个开源浏览器的网页排版引擎,更多关于WebKit的信息看点击打开链接。

        新建工程WebViewDemo,不赘述。核心文件有三个,贴出如下:

1)、Activity文件WebViewDemoActivity.java:

package com.android.webviewdemo;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnKeyListener;import android.webkit.URLUtil;import android.webkit.WebSettings;import android.webkit.WebView;import android.widget.Button;import android.widget.EditText;public class WebViewDemoActivity extends Activity {private EditText mUrl;private Button mConnect;private WebView mWebView;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                mWebView = (WebView)findViewById(R.id.webview);        mUrl = (EditText)findViewById(R.id.url);        mConnect = (Button)findViewById(R.id.connect);                        /**         * 设置WebView的属性         */        WebSettings webSettings = mWebView.getSettings();        webSettings.setJavaScriptEnabled(true);    //支持Javascript脚本语言        webSettings.setAllowFileAccess(true);      //允许WebView访问文件数据        webSettings.setBuiltInZoomControls(true);  //支持内容缩放控制                mConnect.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubopenNetPage();}                });                mUrl.setOnKeyListener(new OnKeyListener(){@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {// TODO Auto-generated method stubif(keyCode == KeyEvent.KEYCODE_ENTER){openNetPage();return true;}return false;}                });    }        private void openNetPage(){    String url = mUrl.getText().toString();if(URLUtil.isNetworkUrl(url)){mWebView.loadUrl(url);}else{mUrl.setText("address error, input again!");}    }    /**     * 若多次打开网页,支持网页返回到上一级     */@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// TODO Auto-generated method stubif((keyCode == KeyEvent.KEYCODE_BACK) && (mWebView.canGoBack())){mWebView.goBack();return true;}return super.onKeyDown(keyCode, event);}}

2)、布局文件main.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" >        <LinearLayout android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="horizontal"        android:animationCache="true"        android:layout_weight="9">        <EditText            android:id="@+id/url"            android:layout_width="wrap_content"            android:layout_weight="9"            android:layout_height="wrap_content"            android:lines="1"            android:inputType="textUri"            android:imeOptions="actionGo"        />        <Button            android:id="@+id/connect"            android:layout_width="wrap_content"            android:layout_weight="1"            android:layout_height="wrap_content"            android:text="connect"        />    </LinearLayout>    <WebView    android:id="@+id/webview"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:layout_weight="1"/></LinearLayout>

3)、Manifest文件AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.android.webviewdemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="10" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:label="@string/app_name"            android:name=".WebViewDemoActivity" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>        <uses-permission android:name="android.permission.INTERNET"/></manifest>

使用注意事项:

1)、需在AndroidManifest.xml文件中添加网络访问权限:

<uses-permission android:name="android.permission.INTERNET"/>
否则会提示网络无法访问。

2)、需要时能Javascrip脚本语言,否则很多网页上用Javascript编写的对话框无法打开。

3)、关于为WebView添加辅助处理各种通知和请求的类WebViewClient,添加辅助处理Javascrip对话框、图标、加载进度条等的类WebChromeClient的内容,有兴趣的XDJM自己去琢磨琢磨了。大笑