js android打电话,Android开发webview与js的交互总结【安卓巴士博文大赛】

一些应用为了节省开发时间,会开用Android、iOS内嵌HTML方式进行开发,在涉及到打电话、发短信这些Android原生功能时,需要涉及到webView中js与ANdroid的交互。这里结合我做过的项目,以其中的拨打电话的功能为例,总结下过程:

1、添加权限声明

2、添加JavaScript支持contentWebView.getSettings().setJavaScriptEnabled(true);

3、重写shouldOverrideUrlLoading(WebView view, String url)方法,对符合和不符合条件的URL进行判断public boolean shouldOverrideUrlLoading(WebView view, String url) {            if (url.startsWith("tel:")) {

Intent intent = new Intent(Intent.ACTION_VIEW,

Uri.parse(url));

startActivity(intent);

return false;

} else {

view.loadUrl(url);                return true;

}

}

4、在web页面的链接改造成调用js函数,在函数里面执行类似window.js交互接口名.js函数名()。function func(tel){

window.jsInterface.exitSys(tel);

}

5、在Android壳源码里面对应加上js接口声明,比如我的名称是jsInterface。contentWebView.addJavascriptInterface(new JavascriptInterface(this),            "jsInterface");

6、在JavascriptInterface类里面声明与js对应的方法。public void exitSys(String number) {

Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number));

startActivity(intent);

}

7、被调用的js如有需要请动态传参。

8、在web页面加上浏览器判断操作系统类型,并执行对应的js函数。$(document).ready(function(){

$("a").each(function(){            var u = navigator.userAgent;            if(u.indexOf('iPhone') > -1){

}            else {                if($(this).attr("href").length>4&&$(this).attr("href").indexOf("tel:")==0){

$(this).attr("href","javascript:exitSys('"+$(this).attr("href").replace("tel:","")+"')");

}

}

});

});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值