SuperWebview开发2

想着集成了就OK了,然而并不是这样的.还需要在里面调用方法.这就很难受了啊,看了一下API,记录下SuperWebview中的一些方法


SuperWebview中的一些方法,


private voidbindSomething(){

//设置一个监听,监听来自Html5页面发送出来的事件

//此处我们监听"abc"事件,监听Html5页面通过api.sendEvent发出"abc"事件时

addHtml5EventListener(newHtml5EventListener("contact") {

@Override

public voidonReceive(WebViewProvider provider,Object extra) {

showAlert("收到来自Html5的abc事件,传入的参数为:\n\n"+ extra +"\n\n");

}

});

}


/**

* 重写该函数,可实现处理收到来自Html5页面的操作请求,处理完毕后异步回调至Html5

*/

@Override

protected booleanonHtml5AccessRequest(WebViewProvider provider,UZModuleContext moduleContext) {

String name = moduleContext.optString("name");

//"requestEvent"与assets/widget/html/wind.html页面的发送请求相匹配

if("requestEvent".equals(name)){

JSONObject extra =newJSONObject();

try{

extra.put("value","哈哈哈,我是来自前端的事件");

}catch(Exception e){

}

//"fromNative"与assets/widget/html/wind.html页面的apiready中注册的监听相对应

sendEventToHtml5("fromNative",extra);

return true;

}

defaultHandleHtml5AccessRequest(moduleContext);

return true;

}


/**

* 重写该函数,可实现处理某Html5页面开始加载时,执行相应的逻辑

*/

@Override

protected voidonPageStarted(WebViewProvider provider,String url,Bitmap favicon) {

//远程Url,加载较慢

if(url.startsWith("http")){

showProgress();

}

}


/**

* 重写该函数,可实现处理某Html5页面结束加载时,执行相应的逻辑

*/

@Override

protected voidonPageFinished(WebViewProvider provider,String url) {

//远程Url,加载较慢

if(url.startsWith("http")){

mProgress.setText("加载进度:100");

hidenProgress();

};

}


/**

* 重写该函数,可实现处理某Html5页面加载进度发生变化时,执行相应的逻辑

*/

@Override

protected voidonProgressChanged(WebViewProvider provider, intnewProgress) {

//远程Url,加载较慢,显示进度,提升体验

mProgress.setText("加载进度:"+ newProgress);

if(100== newProgress){

hidenProgress();

}

}


/**

* 重写该函数,可实现处理某Html5页面dom的title标签发生变化时,执行相应的逻辑

*/

@Override

protected voidonReceivedTitle(WebViewProvider provider,String title) {

;

}


/**

* 重写该函数,可实现处理拦截某Html5页面是否允许访问某API,如模块的API,APICloud引擎的API

*/

@Override

protected booleanshouldForbiddenAccess(String host,String module,String api) {

return false;

}


/**

* 重写该函数,可实现处理当某Webview即将加载某Url时,是否进行拦截,拦截后,该Webview将不继续加载该Url

*/

@Override

protected booleanshouldOverrideUrlLoading(WebViewProvider provider,String url) {

if(url.contains("taobao")){

showAlert("不允许访问淘宝!");

return true;

}

return false;

}

//默认处理收到收到来自Html5页面的操作请求,并通过UZModuleContext给予JS回调

private voiddefaultHandleHtml5AccessRequest(finalUZModuleContext moduleContext){

String name = moduleContext.optString("name");

Object extra = moduleContext.optObject("extra");

AlertDialog.Builder dia =newAlertDialog.Builder(this,AlertDialog.THEME_HOLO_LIGHT);

dia.setTitle("提示消息");

dia.setMessage("收到来自Html5页面的操作请求,访问的名称标识为:\n["+ name +"]\n传入的参数为:\n["+ extra +"]\n\n"+"是否处理?\n");

dia.setCancelable(false);

dia.setPositiveButton("不处理", null);

dia.setNegativeButton("处理", newOnClickListener() {

public voidonClick(DialogInterface dialog, intwhich) {

dialog.dismiss();

JSONObject json =newJSONObject();

try{

json.put("result0","value0");

json.put("result1","value1");

json.put("result2","value2");

}catch(Exception e){

;

}

moduleContext.success(json, true);

}

});

dia.show();

}

你可能感兴趣的:(SuperWebview开发2)