webview相关

对webview的一些设置 


private void Setting() {
webview.getSettings().setLoadWithOverviewMode(true); // 自适应屏幕
webview.getSettings().setJavaScriptEnabled(true); // 设置页面支持Javascript
webview.getSettings().setLoadWithOverviewMode(true);
webview.getSettings().setSupportZoom(true); // 支持缩放
webview.getSettings().setBuiltInZoomControls(true); // 显示放大缩小
webview.setInitialScale(100); // 初始化时缩放
webview.getSettings().setDefaultTextEncodingName("utf-8"); // 字符集
webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);// 解决缓存问题
webview.setWebViewClient(new MyWebViewClient());// 解决webview中当开启新的页面的时候用webview来进行处理而不是用系统自带的浏览器处理
webview.setWebChromeClient(new HellowebViewClient());//解决webview中无法弹出alert的问题
webview.setDownloadListener(new MyWebViewDownLoadListener());
webview.getSettings().setSupportZoom(false);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);


webview.addJavascriptInterface(new jsInterface(), "android");


}




/**
* 解决webview中当开启新的页面的时候用webview来进行处理而不是用系统自带的浏览器处理

* 载入页面完成的事件,获取网页内容

* @author Administrator

*/
private class MyWebViewClient extends WebViewClient {
/**
* 如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。
* 给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法:
* shouldOverrideUrlLoading:对网页中超链接按钮的响应。当按下某个连接时
* WebViewClient会调用这个方法,并传递参数:按下的url。比如当webview内嵌
* 网页的某个数字被点击时,它会自动认为这是一个电话请求,会传递url:tel:123,
* 如果你不希望如此可通过重写shouldOverrideUrlLoading函数解决
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 当开启新的页面的时候用webview来进行处理而不是用系统自带的浏览器处理
// 互联网用:webView.loadUrl("http://www.google.com");
// 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放
if (url.indexOf("tel:") < 0) {
view.loadUrl(url);
}
return true;
}


/**
* 接收到Http请求的事件
*/
@Override
public void onReceivedHttpAuthRequest(WebView view,
HttpAuthHandler handler, String host, String realm) {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}


/**
* 载入页面完成的事件
**/
@Override
public void onPageFinished(WebView view, String url) {
// 获取网页内容
Message msg = new Message();
msg.what = 5;
// dateandtimeHandler.sendMessage(msg);
super.onPageFinished(view, url);
}


/**
* 载入页面开始的事件 这个事件就是开始载入页面调用的,通常我们可以在这设定一个loading的页面,告诉用户程序在等待网络响应。
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// dateandtimeHandler.sendEmptyMessage(4);
super.onPageStarted(view, url, favicon);
}
}










/**
* 解决webview中无法弹出alert的问题
*/
private class HellowebViewClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message,
final JsResult result) {
final AlertDialog.Builder builder = new AlertDialog.Builder(
view.getContext());
builder.setTitle("对话框").setMessage(message)
.setPositiveButton("确定", null);


// 不需要绑定按键事件
// 屏蔽keycode等于84之类的按键
builder.setOnKeyListener(new OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
Log.v("onJsAlert", "keyCode==" + keyCode + "event=" + event);
return true;
}
});
// 禁止响应按back键的事件
builder.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
result.confirm();// 因为没有绑定事件,需要强行confirm,否则页面会变黑显示不了内容。
return true;
// return super.onJsAlert(view, url, message, result);
}


/**
* 覆盖默认的window.confirm展示界面,避免title里显示为“:来自file:”
*/
@Override
public boolean onJsConfirm(WebView view, String url, String message,
final JsResult result) {
final AlertDialog.Builder builder = new AlertDialog.Builder(
view.getContext());
builder.setTitle("对话框").setMessage(message)
.setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
}).setNeutralButton("取消", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
});
builder.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
result.cancel();
}
});


// 屏蔽keycode等于84之类的按键,避免按键后导致对话框消息而页面无法再弹出对话框的问题
builder.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
Log.v("onJsConfirm", "keyCode==" + keyCode + "event="
+ event);
return true;
}
});
// 禁止响应按back键的事件
// builder.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
return true;
// return super.onJsConfirm(view, url, message, result);
}


/**
* 覆盖默认的window.prompt展示界面,避免title里显示为“:来自file:”
* window.prompt('请输入您的域名地址', '618119.com');
*/
@Override
public boolean onJsPrompt(WebView view, String url, String message,
String defaultValue, final JsPromptResult result) {
final AlertDialog.Builder builder = new AlertDialog.Builder(
view.getContext());


builder.setTitle("对话框").setMessage(message);


final EditText et = new EditText(view.getContext());
et.setSingleLine();
et.setText(defaultValue);
builder.setView(et).setPositiveButton("确定", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm(et.getText().toString());
}
}).setNeutralButton("取消", new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
});


// 屏蔽keycode等于84之类的按键,避免按键后导致对话框消息而页面无法再弹出对话框的问题
builder.setOnKeyListener(new OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
Log.v("onJsPrompt", "keyCode==" + keyCode + "event="
+ event);
return true;
}
});


// 禁止响应按back键的事件
// builder.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
return true;
// return super.onJsPrompt(view, url, message, defaultValue,
// result);
}
}


设定传参接口
class jsInterface {
public void androidIndex() {
// String jsonStr =
// "[{\"code\":\"dzsc\",\"name\":\"大众市场\"},{\"code\":\"zqsc\",\"name\":\"政企市场\"},";
String jsonStr = "[{\"code\":\"dzsc\",\"name\":\"大众市场\"},";
jsonStr += "{\"code\":\"rbzt\",\"name\":\"日报专题\"},";
jsonStr += "{\"code\":\"jykh\",\"name\":\"经营考核\"},";
jsonStr += "{\"code\":\"sz\",\"name\":\"设置\"}]";
webview.loadUrl("javascript:load('"
+ Constans.userInfo.getUserName() + "','" + jsonStr + "')");
}


public void androidClickdzsc() {
Log.v("DataCenterMainIndex", "androidClickdzsc");
String name = "大众市场";
String code = "dzsc";
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("code", code);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setClass(DataCenterMainIndex.this,
DataCenterLevelTwoList.class);
startActivity(intent);


}


public void androidClickzqsc() {
// Log.v("DataCenterMainIndex", "androidClickzqsc");
// String name = "政企市场";
// String code = "zqsc";
// Intent intent = new Intent();
// Bundle bundle = new Bundle();
// bundle.putString("name", name);
// bundle.putString("code", code);
// intent.putExtras(bundle);
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// intent.setClass(DataCenterMainIndex.this,
// DataCenterLevelTwoList.class);
// startActivity(intent);


Toast.makeText(DataCenterMainIndex.this, "正在建设中...",
Toast.LENGTH_SHORT).show();
}


public void androidClickrbzt() {
if (Constans.userInfo.getUserLevel().substring(0, 1).equals("A")
|| Constans.userInfo.getUserLevel().substring(0, 1)
.equals("B")
|| Constans.userInfo.getUserLevel().substring(0, 1)
.equals("C")) {
Log.v("DataCenterMainIndex", "androidClickrbzt");
String name = "日报专题";
String code = "rbzt";
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("code", code);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setClass(DataCenterMainIndex.this,
DataCenterLevelTwoList_rbzt.class);
startActivity(intent);
} else {
Toast.makeText(DataCenterMainIndex.this, "权限不足,无法查看!",
Toast.LENGTH_SHORT).show();
}
}


public void androidClickSetting() {
Log.v("DataCenterMainIndex", "androidClickSetting");
String name = "设置";
String code = "sz";
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("code", code);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setClass(DataCenterMainIndex.this, DataCenterSetting.class);
startActivity(intent);
}


public void androidClickjykh() {
Log.i("DataCenterMainIndex", "androidClickjykh");
String name = "经营考核";
String code = "jykh";
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("name", name);
bundle.putString("code", code);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// intent.setClass(DataCenterMainIndex.this,
// JykhBimanagerDetail.class);
intent.setClass(DataCenterMainIndex.this, JykhList.class);
startActivity(intent);
}
}


//当点击url时 打开相应程序进行下载
private class MyWebViewDownLoadListener implements DownloadListener {


@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
Intent i = new Intent(Intent.ACTION_VIEW);//打开相应的程序
i.setData(Uri.parse(url));
startActivity(i);
}


}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值