android webview js 交互框架,自定义android混合框架开发实践1:实现基础andorid和webview交互...

1. 本地web资源

1.构建assets/web文件夹

2.创建index.html你的html代码

3.使用本地web资源WebView mv = findViewById(...);

mv.loadUrl("file:///android_asset/web/index.html")

2.实现基础的android和js交互

(1). 实现js调用andorid方法

在Acitivity内构建一个function@JavascriptInterface

public void test(){

Log.e("测试","====");

}

@JavascriptInterface 在新版本的api内必须 否则无效果

将android对象转js对象供js调用WebView mv = findViewById(...);

mv.addJavascriptInterface(this,"activity")

mv.loadUrl("file:///android_asset/web/index.html")

js调用window.activity.test()

(2). android 调用 js方法WebView mv = findViewById(...);

mv.getSettings().setJavaScriptEnabled(true);

mv.loadUrl("javascript:alert('test')");

(3). js传参回调函数给android触发

注入一个js对象,存储回调函数

js对象var callbacks = {

fns:[],

add(fn){this.fns.push(fn);return this.fns.length-1;},

get(id){return this.fns[id];}

}

注入方式WebView vc = findViewById(...);

vc.getSettings().setJavaScriptEnabled(true);

vc.setWebViewClient(new WebViewClient(){

@Override

public void onPageFinished(WebView view, String url)

{

super.onPageFinished(view, url);

vc.loadUrl("javascript:js代码");

}

});

android 回调方法@JavascriptInterface

public void callback(String msg,int callback_id){

mHandler.post(new Runnable() {

@Override

public void run() {

WebView vc = findViewById(...);

vc.getSettings().setJavaScriptEnabled(true);

vc.loadUrl("javascript:callbacks.get("+callback_id+")('"+msg+"')");

}

});

}

js端调用var callback_id = callbacks.add(function(msg){

alert(msg)

});

window.activity.callback("测试",callback_id)

(4) android 调用js并获取返回值mWebView.evaluateJavascript("javascript:test()", new ValueCallback() {

@Override

public void onReceiveValue(String response) {

}

});

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值