使用WebView在应用程序中打开网页

时间:2024-04-13 14:33:13

      如果想在应用程序里展示一些网页,在自己的应用程序里嵌入一个浏览器,可以借助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;
    }

     然后运行一下吧

                                  使用WebView在应用程序中打开网页