mWebSettings = mWebView01.getSettings();
    
    // 是否启用Application缓存
    mWebSettings.setAppCacheEnabled(true);
    // 是否启用数据库、存放缓存、地标权限等
    mWebSettings.setDatabaseEnabled(true); 
    // 启用数据库缓存的存放路径
    mWebSettings.setDatabasePath("/data/data/com.package.name/databases");

 

mWebView.setWebViewClient(new ThroughClient());
mWebView.setWebChromeClient(new ThroughChromeClient());
mWebView.addJavascriptInterface(this, "meilishe");

ThroughClient

class ThroughClient extends WebViewClient {
        // 打开网页时调用本webview
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("tel:")) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
        }
    }

 

ThroughChromeClient

class ThroughChromeClient extends WebChromeClient {

        // 更新进度条
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            if (newProgress == 100) {
                mPBar.setProgress(100);
                mPBar.setVisibility(View.GONE);
            } else {
                if (mPBar.getVisibility() != View.VISIBLE) {
                    mPBar.setVisibility(View.VISIBLE);
                }
                mPBar.setProgress(newProgress);
            }

            super.onProgressChanged(view, newProgress);
        }

        class DismissListener implements DialogInterface.OnDismissListener {
            JsResult result;

            DismissListener(final JsResult result) {
                this.result = result;
            }

            @Override
            public void onDismiss(DialogInterface dialog) {
                result.cancel();
            }
        }

        @Override
        public boolean onJsAlert(WebView view, String url, String message,
                final JsResult result) {
            new AlertDialog.Builder(mContext)
                    .setOnDismissListener(new DismissListener(result))
                    .setTitle("来自星星的提示")
                    .setMessage(message)
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // 处理结果为确定状态 同时唤醒WebCore线程
                                    result.confirm();
                                }
                            }).show();
            return true; // 已处理
        }

        @Override
        public boolean onJsConfirm(WebView view, String url, String message,
                final JsResult result) {
            new AlertDialog.Builder(mContext)
                    .setOnDismissListener(new DismissListener(result))
                    .setTitle("confirm")
                    .setMessage(message)
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
//                                    Toast.makeText(mContext, "you clicked yes",0).show();
                                    ToastTools.show(mContext, "you clicked yes",0);
                                    result.confirm();
                                }
                            })
                    .setNegativeButton("NO",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // 处理结果为取消状态 同时唤醒WebCore线程
                                    result.cancel();
                                }
                            }).create().show();
            return true;
        }

        @Override
        public boolean onJsPrompt(WebView view, String url, String message,
                String defaultValue, final JsPromptResult result) {
            // defaultValue 默认值
            // message 消息内容
            new AlertDialog.Builder(mContext)
                    .setOnDismissListener(new DismissListener(result))
                    .setTitle("prompt")
                    .setPositiveButton("YES",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    // 记录结果
                                    result.confirm("返回结果");
                                }
                            })
                    .setNegativeButton("NO",
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    result.cancel();
                                }
                            }).create().show();
            return true;
        }
    }

 

 

截图WebView加载的图片

  webView.setWebViewClient(new WebViewClient(){
      @Override
      public void onPageFinished(WebView view, String url){
        /* 撷取画面 */
        Picture picture = view.capturePicture();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        /* 取得宽和高 */
        int width = picture.getWidth();
        int height = picture.getHeight();

        if (width > 0 && height > 0){

          Bitmap bitmap = Bitmap.createBitmap(width, height,
              Bitmap.Config.ARGB_8888);

          Canvas canvas = new Canvas(bitmap);

          picture.draw(canvas);

          bitmap.compress(Bitmap.CompressFormat.JPEG, 90, baos);

          FileOutputStream fos = null;
          try{
            fos = new FileOutputStream("/sdcard/EXtemp"
                + System.currentTimeMillis() + ".jpg");
            if (fos != null){
              bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);
              fos.close();
            }

          } catch (Exception e) {
            e.printStackTrace();
          }

          Toast.makeText(view.getContext(), "Snapshot OK", Toast.LENGTH_SHORT)
              .show();
        }
        super.onPageFinished(view, url);
      }
    });

 

posted on 2015-04-27 10:43  道无涯  阅读(294)  评论(0编辑  收藏  举报