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:","")+"')");
}
}
});
});
總結
以上是生活随笔為你收集整理的js android打电话,Android开发webview与js的交互总结【安卓巴士博文大赛】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞桨模型保存_手把手教你用飞桨做词向量模
- 下一篇: 新媒体音乐,不适合闭目欣赏的前卫艺术_数