今年突然就要做混合開(kāi)發(fā)了.開(kāi)始覺(jué)得慌慌的.整理了一下今年春節(jié)到現(xiàn)在的感受.和各種坑.
公司首先需要做個(gè)工單管理.本人對(duì)于頁(yè)面不是特別了解.然后部長(zhǎng)一直在做頁(yè)面.我負(fù)責(zé)集成在Android上.
第一個(gè)坑.寫(xiě)的頁(yè)面在Android上有的功能不能實(shí)現(xiàn),于是用了騰訊的X5內(nèi)核流浪器.勉勉強(qiáng)強(qiáng)能用了.
第二個(gè)坑. 在Android里面調(diào)用頁(yè)面上的Alert,Confirm,Prompt彈窗有網(wǎng)址顯示.于是重寫(xiě)了webChromeClient.代碼如下:
public class MyWebChromeClient extends WebChromeClient {
@Override
public void onCloseWindow(WebView window) {
super.onCloseWindow(window);
}
@Override
public boolean onCreateWindow(WebView view, boolean dialog,
boolean userGesture, Message resultMsg) {
return super.onCreateWindow(view, dialog, userGesture, resultMsg);
}
/**
* 覆蓋默認(rèn)的window.alert展示界面巍扛,避免title里顯示為“:來(lái)自file:////”
*/
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
final AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
builder.setTitle(" ")
.setMessage(message)
.setPositiveButton("確定", null);
// 禁止響應(yīng)按back鍵的事件
builder.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
result.confirm();// 因?yàn)闆](méi)有綁定事件癞埠,需要強(qiáng)行confirm,否則頁(yè)面會(huì)變黑顯示不了內(nèi)容囱稽。
return true;
// return super.onJsAlert(view, url, message, result);
}
public boolean onJsBeforeUnload(WebView view, String url,
String message, JsResult result) {
return super.onJsBeforeUnload(view, url, message, result);
}
/**
* 覆蓋默認(rèn)的window.confirm展示界面涨颜,避免title里顯示為“:來(lái)自file:////”
*/
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 DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int which) {
result.confirm();
}
})
.setNeutralButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
result.cancel();
}
});
// 禁止響應(yīng)按back鍵的事件
// builder.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
return true;
// return super.onJsConfirm(view, url, message, result);
}
/**
* 覆蓋默認(rèn)的window.prompt展示界面,避免title里顯示為“:來(lái)自file:////”
* window.prompt('請(qǐng)輸入您的域名地址', '618119.com');
*/
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 DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm(et.getText().toString());
}
})
.setNeutralButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.cancel();
}
});
// 禁止響應(yīng)按back鍵的事件
// builder.setCancelable(false);
AlertDialog dialog = builder.create();
dialog.show();
return true;
// return super.onJsPrompt(view, url, message, defaultValue,
// result);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
super.onReceivedIcon(view, icon);
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
}
@Override
public void onRequestFocus(WebView view) {
super.onRequestFocus(view);
}
}
未完待續(xù);