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);
}
});