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();

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,537评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,981评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,466评论 25 708
  • 1、 我有一个闺蜜,我们初中同学的时候她是初中的校花,我们高中的时候她是高中的校花。 高考结束,出成绩的前一天晚上...
    Anana阅读 403评论 3 1
  • 2017.5.16 BY PUshua屎蛋 周末去门口取Q寄来的信,一路小跑,路上还在想你的笔迹之前是什么样子。四...
    竹舟出品阅读 479评论 0 8