日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android native.js,Android Native与JS通信互调

發布時間:2023/12/9 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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通信互调的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。