Android打开网页(android内置浏览器+webView)

版权声明:本博客仅用于学习交流,欢迎转载,但请注明作者和出处 https://blog.csdn.net/weixin_37577039/article/details/78597877

Android打开网页

1 通过系统自带的浏览器访问

// 打开网址 这个是通过打开android自带的浏览器进行的打开网址
    Uri uri = Uri.parse(str);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    if (intent.resolveActivity(getPackageManager()) != null) {
        // 网址正确 跳转成功
        startActivity(intent);
    } else {
        //网址不正确 跳转失败 提示错误
        Toast.makeText(MainActivity.this, "网址输入错误,请重新输入!", Toast.LENGTH_SHORT).show();

    }

2 通过APP内部打开网页,WebView控件
XML中

<WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

java中

private WebView webView;
 webView = findViewById(R.id.webView);
 initWebView();
 private void initWebView() {
        //加载一个网页:
        webView.loadUrl("");

WebViewClient类

webView.setWebViewClient(new WebViewClient() {
            // 复写shouldOverrideUrlLoading()方法,使得打开网页时不调用系统浏览器, 而是在本WebView中显示
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
                  //开始载入页面调用的,我们可以设定一个loading的页面,告诉用户程序在等待网络响应。
                  }
                 // 当每一个页面加载出来时的动作 可以获取当前页面的信息 如URL 如标题等
            @Override
            public void  onPageStarted(WebView view, String url, Bitmap favicon) {
                //设定加载开始的操作
                // 如可以得到当前的URL
                //current_url=view.getUrl();
            }
      @Override
      public void onPageFinished(WebView view, String url) {
         //设定加载结束的操作
      }
  public boolean onLoadResource(WebView view, String url) {
         //设定加载资源的操作,在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
      }
      //加载页面的服务器出现错误时(如404)调用 使用自定义的错误界面 更符合软件的整体设计风格
      //步骤1:写一个html文件(error_handle.html),用于出错时展示给用户看的提示页面
//步骤2:将该html文件放置到代码根目录的assets文件夹下
//步骤3:复写WebViewClient的onRecievedError方法
//该方法传回了错误码,根据错误类型可以进行不同的错误分类处理
@Override
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
switch(errorCode)
                {
                case HttpStatus.SC_NOT_FOUND:
                    view.loadUrl("file:///android_assets/error_handle.html");
                    break;
                }
            }
//处理https请求
@Override    
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {    
            handler.proceed();    //表示等待证书响应
        // handler.cancel();      //表示挂起连接,为默认方式
        // handler.handleMessage(null);    //可做其他处理
        }

        });

WebChromeClient类
辅助 WebView 处理 Javascript 的对话框,网站图标,网站标题等

webview.setWebChromeClient(new WebChromeClient(){
    //获得网页的加载进度并显示 
      @Override
      public void onProgressChanged(WebView view, int newProgress) {
          if (newProgress < 100) {
              String progress = newProgress + "%";
              // 这里的progress为progress控件
              progress.setText(progress);
            } else {
        }
       //获取Web页中的标题
        @Override
    public void onReceivedTitle(WebView view, String title) {
       titleview.setText(title);
// 还有设计JS界面的对话框 警示框等

    });

获取WebView当前网址

webView.getUrl();

javascript支持
要使得到的内容的某些按钮可以被点击,对话框的确认按钮,列表选择,返回等按钮可以使用,则添加
javascript支持

webView.getSettings().setJavaScriptEnabled(true);

参考链接:http://www.jianshu.com/p/3c94ae673e2a


没有更多推荐了,返回首页