zoukankan      html  css  js  c++  java
  • 11、WebView 使用总结

    <WebView
         android:id="@+id/webview"
         android:background="@color/white"
         android:layout_width="fill_parent"
         android:layout_height="180dp"
         android:layout_margin="5dp" />
    // 访问网络权限
    <uses-permission android:name="android.permission.INTERNET" /> 
      webview.getSettings().setJavaScriptEnabled(true);
      
      //自适应屏幕
      webview.getSettings().setUseWideViewPort(true);
      webview.getSettings().setLoadWithOverviewMode(true);
       //支持缩放
      webview.getSettings().setSupportZoom(true);
      webview.getSettings().setBuiltInZoomControls(true);
      
      webview.loadUrl(“”);   // 加载网页
      webview.setWebViewClient(new MyWebViewClient());  // 不写这个,有可能部分网页加载不出来
     
      class MyWebViewClient extends WebViewClient {
            @Override
            // 在WebView中而不是默认浏览器中显示页面
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }
      }

    WebView可直接指定URL显示网页:webView.loadUrl("http://www.baidu.com"); 

    WebView可直接装载HTML代码 :  

    webView.loadDataWithBaseURL(baseUrl, html, "text/html", "utf-8", historyUrl); 

    JavaScript可以调用Java方法,互相传递数据 

    webView.addJavascriptInterface(new Object()  {

         public void move(int x, int y)  {

              ... ...

         }
    }, "demo"); 


    点击页面按钮得到的Url连接地址。
     1 class MyWebViewClient extends WebViewClient {
     3         @Override    // 点击页面按钮得到的Url连接地址。
     4         public boolean shouldOverrideUrlLoading(WebView view, String url) {
     8             if (url.equals(WebUrl.ExitLogin)) {  // 如果定义的地址和得到的地址相同
     9                 AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
    10                 dialog.setTitle(getResources().getText(R.string.main_title));
    11                 dialog.setMessage(getResources().getText(R.string.main_message));
    12                 dialog.setNegativeButton(getResources().getText(R.string.main_cancel),
    13                         new DialogInterface.OnClickListener() {
    14                             @Override
    15                             public void onClick(DialogInterface dialog, int which) {
    16                                 dialog.dismiss();
    17                             }
    18                         });
    19                 dialog.setPositiveButton(getResources().getText(R.string.main_ok),
    20                         new DialogInterface.OnClickListener() {
    21                             @Override
    22                             public void onClick(DialogInterface dialog, int which) {
    23                                 .............30                             }
    31                         });
    32 
    33                 dialog.show();
    35             } else {
    36                 view.loadUrl(url);
    37             }
    39             return true;
    40         }
    webview.setWebViewClient(new MyWebViewClient());

    获取页面弹出的对话框,可以获取对话框的内容 message。

    webview.setWebChromeClient(new WebChromeClient() {
       @Override    // 获取页面弹出的对话框,可以获取对话框的内容 message。
       public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
          if (!TextUtils.isEmpty(message)) {
             AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
             dialog.setTitle(getResources().getText(R.string.main_title));
             dialog.setMessage(getResources().getText(R.string.main_message));
             dialog.setNegativeButton(getResources().getText(R.string.main_cancel),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
             dialog.setPositiveButton(getResources().getText(R.string.main_ok),
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            ..........
                        }
                     });
               dialog.show();
            }
            return true;
        }
        @Override
        public boolean onJsConfirm(WebView view, String url, String message, 
    JsResult result) {
    return true; } });

     获取(网)页面弹出的对话框。

    webview.setWebChromeClient(new WebChromeClient() {
        @Override    // 获取页面弹出的对话框,可以获取对话框的内容 message。
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
            if (!TextUtils.isEmpty(message)) {
                  Log.i("tag", "onJsAlert..." + message);
                  return false;
            }
                return true;
        }
         @Override
         public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
            return true;
          }
    });

    WebView加载网页开始 ------- 网页加载完成,现在进度条。

     1 class MyWebViewClient extends WebViewClient {
     2 
     3         @Override
     4         public void onPageStarted(WebView view, String url, Bitmap favicon) {
     5             super.onPageStarted(view, url, favicon);
     6 
     7             progress.setVisibility(View.VISIBLE);
     8             textview.setVisibility(View.VISIBLE);
     9         }
    10 
    11         @Override
    12         public void onPageFinished(WebView view, String url) {
    13             super.onPageFinished(view, url);
    14 
    15             progress.setVisibility(View.GONE);
    16             textview.setVisibility(View.GONE);
    17         }
    18 
    19         @Override    // 点击页面按钮得到的Url连接地址。
    20         public boolean shouldOverrideUrlLoading(WebView view, String url) {
    22             Log.i("tag", "MyWebViewClient..." + url);
    23 
    24             if (url.equals(WebUrl.ExitLogin)) {
                      ...........
    60             } else {
    61                 view.loadUrl(url);
    62             }
    64             return true;
    65         }
    67     }

    WebView缓存清除

    webview.clearCache(true);
    webview.clearHistory();
    webview.clearFormData();
    webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

    http://www.eoeandroid.com/thread-66479-1-1.html

    Android安全开发之WebView中的地雷 

     http://www.devdiv.com/Android-android_webview_-thread-218274-1-1.html

    WebView基本使用   http://www.cnblogs.com/mengdd/archive/2013/03/01/2938295.html

    Android WebView常见问题及解决方案汇总   http://www.cnblogs.com/lee0oo0/p/4026774.html

    Android WebView使用总结   http://blog.csdn.net/hknock/article/details/8560490

    网页启动Activity,网页传值Activity  http://www.cnblogs.com/androidsj/p/4527868.html

     开源浏览器:http://www.apkbus.com/android-44306-1-1.html

     webkit for android http://www.cnblogs.com/Caiqinghua/archive/2011/05/04/2036864.html

     

  • 相关阅读:
    使用ALAssetsLibrary读取所有照片
    dispatch_after中时间的计算
    UICollectionView的header悬停
    ios侧滑返回:完美解决 interactivePopGestureRecognizer 卡住的问题
    自定义TabBar
    automaticallyAdjustsScrollViewInsets(UITextView文字顶部留有空白)
    kvo&kvc
    调用iPhone的短信
    Windows 10中Oracle数据库导出到Access数据库(MDB)
    HP Z620 Windows 7 系统安装(含磁盘阵列)
  • 原文地址:https://www.cnblogs.com/androidsj/p/3929357.html
Copyright © 2011-2022 走看看