js android打电话,Android开发webview与js的交互总结【安卓巴士博文大赛】
一些應(yīng)用為了節(jié)省開發(fā)時(shí)間,會(huì)開用Android、iOS內(nèi)嵌HTML方式進(jìn)行開發(fā),在涉及到打電話、發(fā)短信這些Android原生功能時(shí),需要涉及到webView中js與ANdroid的交互。這里結(jié)合我做過的項(xiàng)目,以其中的撥打電話的功能為例,總結(jié)下過程:
1、添加權(quán)限聲明
2、添加JavaScript支持contentWebView.getSettings().setJavaScriptEnabled(true);
3、重寫shouldOverrideUrlLoading(WebView view, String url)方法,對(duì)符合和不符合條件的URL進(jìn)行判斷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頁面的鏈接改造成調(diào)用js函數(shù),在函數(shù)里面執(zhí)行類似window.js交互接口名.js函數(shù)名()。function?func(tel){
window.jsInterface.exitSys(tel);
}
5、在Android殼源碼里面對(duì)應(yīng)加上js接口聲明,比如我的名稱是jsInterface。contentWebView.addJavascriptInterface(new?JavascriptInterface(this),????????????"jsInterface");
6、在JavascriptInterface類里面聲明與js對(duì)應(yīng)的方法。public?void?exitSys(String?number)?{
Intent?intent?=?new?Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number));
startActivity(intent);
}
7、被調(diào)用的js如有需要請(qǐng)動(dòng)態(tài)傳參。
8、在web頁面加上瀏覽器判斷操作系統(tǒng)類型,并執(zhí)行對(duì)應(yīng)的js函數(shù)。$(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:","")+"')");
}
}
});
});
總結(jié)
以上是生活随笔為你收集整理的js android打电话,Android开发webview与js的交互总结【安卓巴士博文大赛】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞桨模型保存_手把手教你用飞桨做词向量模
- 下一篇: 2018安卓巴士开发者大会打造Andro