Android与Js进行交互
Android與JS進行交互主要依靠WebView,webView相當于一個橋梁來溝通兩者。
Android調用Js:
1、webView的loadurl()方法
互聯網頁面用:loadUrl(http://baidu.com);
本地文件用:loadUrl(file://android_asset/xx.html);
? ? ? ? ? ? ? ? ? ? ? ? 但是調用此方法必須加上此代碼:
mWebView = (WebView) findViewById(R.id.mWebView); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true);html串用:String html=“html的內容”;
? ? ? ? ? ? ? ? ? ?myWebView.loadData(htmlString, "text/html", "utf-8");
2、通過webView的evaluateJavascript()方法
區別:loadUrl()使用簡單,無返回值,所以效率低,每調用一次就刷新一次;evaluateJavascript()有返回值,效率高,調用的時候不刷新webView,只能在Android4.4以上支持。
JS調用Android代碼:
1、通過WebView的addJavascriptInterface()進行對象映射
步驟:
? ? ? ? ? ? 定義一個與JS對象映射關系的Android類
? ? ? ? ? ? 將需要調用的JS代碼以.html格式放到src/main/assets文件夾里
? ? ? ? ? ? 在Android里通過WebView設置Android類與JS代碼的映射
? ? ? ? ? ? 特點:使用簡單
? ? ? ? ? ? 僅將Android對象和JS對象映射即可,不過它存在嚴重的漏洞問題
2、通過?WebViewClient?的shouldOverrideUrlLoading ()方法回調攔截 url
步驟:
? ? ? ? ? ? ?在JS約定所需要的Url協議
? ? ? ? ? ? ?在Android通過WebViewClient復寫shouldOverrideUrlLoading ()
? ? ? ? ? ? ?特點:優點:不存在方式1的漏洞
? ? ? ? ? ? ? ? ? ? ? ? ?缺點:JS獲取Android方法的返回值復雜。
3、通過?WebChromeClient?的onJsAlert()、onJsConfirm()、onJsPrompt()方法回調攔截JS對話框alert()、confirm()、prompt()消息
步驟:
????加載JS代碼,把js代碼放在assets文件中
????在Android通過WebChromeClient復寫onJsPrompt()
May everyone be happy every day and everything go well!
總結
以上是生活随笔為你收集整理的Android与Js进行交互的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 调用系统相机和相册,并且裁剪成圆形图片(
- 下一篇: 看完让你理解WebSocket原理