js与android交互

一、android端配置:
1、首先进行webView的配置

Webview webView=findViewById(rId);
WebSettings settings = webView.getSettings();
// 设置WebView支持JavaScript  必须设置
settings.setJavaScriptEnabled(true);

2、定义web端要调用的类,同时提供给web端

    /**
     * js调用android
     */
    public class WebFunction {
        //这个是js调用android,给我传递参数。参数是相互定义好的
        @JavascriptInterface
        public void back(int id) {
            //方法体
        }
    }


    //将该方法提供给web端  
    //第一个参数是上面创建的类对象,
    //第二个参数是android和web交互的唯一标识符,web端使用该标识符调用类对象的方法
    webView.addJavascriptInterface(new WebFunction(), "jsFunction");

二、Ios端设置(使用的是WKWebView)

   // 进行配置控制器
   WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
   // 实例化对象
   configuration.userContentController = wkUController;
   [configuration.userContentController addScriptMessageHandler:self name:@"back"];

注:本人是android开发,ios代码只是复制的,goToDetails是一个方法,提供给web端调用,与下面web调用的方法名一致

三、web端设置

//判断是否为ios端访问
function _IsIOS() {
    if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
        return true;
    } else {
        return false;
    }
}
//判断是否为android端访问
function _IsAndroid() {
    if (/(Android|Adr)/i.test(navigator.userAgent)) {
        return true;
    } else {
        return false;
    }
}
//下面是web端在点击事件中调用移动端方法
//点击调用移动端方法
function onItemClick(audioId) {
    if (_IsAndroid()) {
        //WebFunction是android和web定义的标识类对象的唯一标识符,和android里传递的标识符是一 一对应的,goToDetails是类对象的方法名。
        jsFunction.back(audioId);
    } else if (_IsIOS()) {
        try {
            //调用格式: window.webkit.messageHandlers.方法名(与Ios定义的方法名一样).postMessage(参数);
            window.webkit.messageHandlers.back.postMessage(id);
        } catch (error) {
            console.log(error)
        }
    }
}


web代码复制的,仅供参考

H5补充使用vue框架的写法:

export function getAndroidInfo(){
    window.jsFunction.back()
}
export function getIosInfo(){
    window.webkit.messageHandlers.back.postMessage(null)
}



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值