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