常用设置
WebSettings mWebSet = mWebView.getSettings();
mWebSet.setJavaScriptEnabled(true);
mWebSet.setSupportZoom(true);
mWebSet.setBuiltInZoomControls(false);
mWebSet.setDefaultFontSize(18);
mWebSet.setAppCacheEnabled(true);
mWebSet.setCacheMode(WebSettings.LOAD_DEFAULT);
mWebView.setWebViewClient(new ThroughClient());
mWebView.setWebChromeClient(new ThroughChromeClient());
mWebView.addJavascriptInterface(this, "meilishe");
mWebView.loadUrl(url);
WebViewClient
class ThroughClient extends WebViewClient {
@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);
}
}
WebChromeClient
@SuppressLint("NewApi")
class ThroughChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int 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) {
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) {
ToastTools.show(mContext, "you clicked yes",0);
result.confirm();
}
})
.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
result.cancel();
}
}).create().show();
return true;
}
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, final JsPromptResult result) {
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;
}
}