如果想在应用程序里展示一些网页,在自己的应用程序里嵌入一个浏览器,可以借助WebView控件调用loadUrl()方法加载显示
对应的网页。
webView = (WebView) findViewById(R.id.web_view);
webView.loadUrl("http://www.baidu.com");
这时可能还会直接跳转到系统浏览器,需要重写shouldOverrideUrlLoading()方法,在webview中实现跳转。
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url);// 根据传入的参数再去加载新的网页
return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器,执行自己的重写的方法
} }); webView.loadUrl(url);
我们还要在AndroidManifest.xml中加上权限,不然会出现无法访问URL
<manifest> …… <uses-permission android:name="android.permission.INTERNET" /> …… </manifest>
这样一个在应用程序中内置的简单浏览器就差不多了,还可以添加一个编辑框edittext 进行完善,用来输入网址。完成后点击enter键访问网页。
但是在输入法软键盘右下角enter键会是回车按键,但我们经常会看到点击不同的编辑框,输入法软键盘右下角会有不同的图标
“GO”或“前往“,放大镜,”发送“。 只需修改EditText中的 android:imeOptions属性,就会出现想要的效果。
android:imeOptions的值有actionGo、 actionSend 、actionSearch、actionDone等
最后还要把edittext的singleline 属性设为ture,或者inputType设为text
给edittext 添加一个setOnKeyListener(onKeyListener)事件,监听软键盘按键。在它的onkey()方法中监听软键盘上右下角Enter键是否被按下。
当参数keyCode ==KeyEvent.KEYCODE_ENTER的时候,就可以响应打开网页的功能了。
private OnKeyListener onKeyListener=new OnKeyListener() { @Override public boolean onKey(View arg0, int keyCode, KeyEvent arg2) { // TODO Auto-generated method stub if(keyCode==KeyEvent.KEYCODE_ENTER) {//在按下enter键后,隐藏软键盘 InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if(inputMethodManager.isActive()){ inputMethodManager.hideSoftInputFromWindow(arg0.getApplicationWindowToken(), 0); } String urlString=editText.getText().toString(); webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } }); webView.loadUrl(urlString); } return false; } };
还可以用goback()方法进行后退
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (webView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) { webView.goBack(); return true; } return false; }
然后运行一下吧