怎么样把html5网站编译为一个app?做了以下尝试:
1.用wex5直接把一个html5网站网址如:http://115.28.89.67:8097/wap-interface/ 打包,之后发现问题:
(1).页面加载很慢
(2)无法回退页面(我们网站好多页面没有回退按钮),无法退出整个web app.
2.用android webview套壳,之后发现问题:
(1)个别js无法加载运行:
A.alert()
/**
* 覆盖默认的window.confirm展示界面,避免title里显示为“:来自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 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);
}
});
弹出框样式:
@Override
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);
// 不需要绑定按键事件
// 屏蔽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);
}
放在webview内部:
myWebView.setWebChromeClient(new WebChromeClient()
{
});
B.history.go(-1)无法正确执行。
改为:history.go(1-history.length);
(2)启动app进入首页加载慢,中间有空白闪屏。
把首页放在本地
在文件中配置:
至此,一个android web app大功告成!