android native.js,Android Native与JS通信互调
寫在最前:
看Android最新技術總結,關注公眾號:
最近因為App與H5交互邏輯太亂,所以抽空梳理了下;對目前App與H5的各種交互通信做個總結,自取適合自己的交互方式。
一、H5調用原生的native方法
1、攔截shouldOverrideUrlLoading方法
借助WebView在加載一個url的時候都會調用WebViewClient類的shouldOverrideUrlLoading(WebView view, String url)方法這一特性,我們可以針對參數的url定義好特殊的schema協議,來調用native提供的不同的邏輯;首先我們需要為WebView設置WebViewClient對象;接著重寫shouldOverrideUrlLoading(WebView view, String url)方法;
這里先說明下App的schema,我們需要針對我們app定義一套自己的schema規范;schema指就是與H5約束好的字符串。h5在調用native方法的時候,需要以約束好的schema為協議,調用native方法。比如 nativeApp://xxxPath?xxxParam=yyy; 其中:nativeApp字符串指schame協議名稱,每個App自己取就可以,我們只攔截該協議下的url請求,其他的可以不處理;xxxPath指關鍵路徑,對應自己的native功能,比如nativeApp://login?表示調用本地登錄界面等等;xxxParam=yyy,表示傳遞的參數,比如nativeApp://login?name=wang;
2、攔截alert、prompt、confirm處理方法
該方式與上面的攔截處理類似,只是針對H5攔截的地方不同;H5端在調用window.alert("nativeApp://login?name=wang")時,會調用WebChromeClient類的onJsAlert方法,我們在該方法中處理schema,調用native方法;
上面的實現是以alert攔截為實例,其他的prompt、confirm完全也可以,一般與H5端約束好就可以
3、addJavascriptInterface注冊Android對象供H5調用
通過調用webView.addJavascriptInterface(對象實例, "對象名稱")方法,注冊一個Android對象到H5端;注冊到H5的對象的方法需要添加@JavascriptInterface?注解,這樣H5端才能正常調用;
H5端使用方式:window.appObject.alert(“我是H5來的提示”)就可以調用到native的方法
二、Android native端調用H5端方法
Android?native目前通過WebView.loadUrl("javascript:方法名('參數')")來調用H5的方法;如H5有如下方法:
window.showCity = function(city){
console.log("我是Native傳遞來的城市:"+city)
}
Android調用:
mWebView.loadUrl(“javascript:window.showCity('北京')”);
在Android版本大于4.4(SDK19)時,可以使用evaluateJavascript(js,callBack)來調用H5端方法;如下:onReceiveValue(String value)的參數value是js方法的返回值;
總結
以上是生活随笔為你收集整理的android native.js,Android Native与JS通信互调的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: latex 如何添加圆圈数字?
- 下一篇: gif android 点击 加载,An