要让自己开发的程序也能拥有浏览器的功能,那么使用内置WebKit引擎的WebView Widget是最合适不过的了。关于WebView组件的基本使用,请参考WebView自制简易浏览器。
本程序采用WebView作为浏览器,虽然android手机已经有内置的浏览器,但毕竟这是一个“开放平台”,任何程序开发人员都可以通过自己的浏览器作为与User通信的信道。需要留意的是,在使用WebView打开网页之后,若User单击WebView里面的链接会有两种可能的结果:一是在WebView里变换网页内容,二是另外打开一个内置浏览器显示网页,要看网页里的a href链接中有没有target=_blank而定。
程序运行效果截图:
Activity程序如下所示:
public class MainActivity extends Activity
{
private Button button=null;
private Button back=null;
private Button forward=null;
private EditText uri=null;
private WebView view=null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
//获得组件对象
this.button=(Button)super.findViewById(R.id.button);
this.back=(Button)super.findViewById(R.id.back);
this.forward=(Button)super.findViewById(R.id.forward);
this.uri=(EditText)super.findViewById(R.id.uri);
this.view=(WebView)super.findViewById(R.id.view);
//若无设置WebView Client,以loadUrl加载网页会打开内置浏览器
this.view.setWebViewClient(new WebViewClient(){});
//为按钮添加消息响应
this.button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view)
{
//获得EditText里面的内容
String strUri=uri.getText().toString();
//在WebView中显示网页数据
MainActivity.this.view.loadUrl(strUri);
}
});
//上一页
this.back.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(MainActivity.this.view.canGoBack())
{
MainActivity.this.view.goBack();
}
}
});
//下一页
this.back.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(MainActivity.this.view.canGoForward())
{
MainActivity.this.view.goForward();
}
}
});
}
}
页面布局文件如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="30sp"
android:text="上一页"
android:textSize="12sp" />
<Button
android:id="@+id/forward"
android:layout_width="wrap_content"
android:layout_height="30sp"
android:text="下一页"
android:textSize="12sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/uri"
android:layout_width="250sp"
android:layout_height="wrap_content"
android:inputType="textUri" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="转到" />
</LinearLayout>
<WebView
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
注意,本程序同样要获得INTERNET权限:
<uses-permission
android:name="android.permission.INTERNET" />