WebView一些设置

WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setGeolocationEnabled(true);//定位
settings.setGeolocationDatabasePath(getFilesDir().getPath());
settings.setBlockNetworkImage(true);
//settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);//自适应
settings.setDisplayZoomControls(true);
//设置默认缩放方式尺寸是far   
settings.setDefaultZoom(WebSettings.ZoomDensity.FAR);  
 //设置出现缩放工具   
settings.setBuiltInZoomControls(true);
settings.setUseWideViewPort(true);//显示用户插件
settings.setSupportZoom(true);
settings.setJavaScriptCanOpenWindowsAutomatically(false);
webView.addJavascriptInterface(new JsToWeb(), "test");
//webView.setInitialScale(25);//为25%,最小缩放等级 
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
webView.setWebViewClient(new MyWebClient());
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onGeolocationPermissionsHidePrompt() {
super.onGeolocationPermissionsHidePrompt();
// Log.i(LOGTAG, "onGeolocationPermissionsHidePrompt");
}


@Override
public void onGeolocationPermissionsShowPrompt(final String origin,
final Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);


AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setMessage("Allow to access location information?");
OnClickListener dialogButtonOnClickListener = new OnClickListener() {


public void onClick(DialogInterface dialog,
int clickedButton) {
if (DialogInterface.BUTTON_POSITIVE == clickedButton) {
callback.invoke(origin, true, true);
} else if (DialogInterface.BUTTON_NEGATIVE == clickedButton) {
callback.invoke(origin, false, false);
}
}
};
builder.setPositiveButton("Allow", dialogButtonOnClickListener);
builder.setNegativeButton("Deny", dialogButtonOnClickListener);
builder.show();
super.onGeolocationPermissionsShowPrompt(origin, callback);
// Log.i(LOGTAG, "onGeolocationPermissionsShowPrompt");


}

@Override
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {//处理页面上有提示框的 js
// 构建一个Builder来显示网页中的alert对话框  
           Builder builder = new Builder(MainActivity.this); 
           builder.setTitle("提示对话框"); 
           builder.setMessage(message); 
           builder.setPositiveButton(android.R.string.ok, 
                   new AlertDialog.OnClickListener() { 
                       @Override 
                       public void onClick(DialogInterface dialog, 
                               int which) { 
                           result.confirm(); 
                       } 
                   }); 
           builder.setCancelable(false); 
           builder.create(); 
           builder.show(); 
           return true; 
}

});


webView.setOnKeyListener(new OnKeyListener() {//监听webview返回


@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& webView.canGoBack()) { // 表示按返回键


webView.goBack(); // 后退


// webview.goForward();//前进
return true; // 已处理
}
}
return false;
}
});

//Js交互方法

private class JsToWeb{
@JavascriptInterface//4.2以上需要增加@JavascriptInterface 接口注册
public void txt(final String id){
MainActivity.this.runOnUiThread(new Runnable() {

@Override
public void run() {
Toast.makeText(getApplicationContext(), id, Toast.LENGTH_SHORT).show();

}
});
}
}


public class MyWebClient extends WebViewClient {


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


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}


@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(null, 1, "访问失败", null);
}


@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
view.getSettings().setBlockNetworkImage(false);
view.resumeTimers();//js导致的,尝试在onpause里加入mWebView.pauseTimers(), onResume()里加入mWebView.resumeTimers()。
}


@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
super.onReceivedSslError(view, handler, error);
// handler.proceed();
}


}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值