androidwebview交互
❶ Android-webview和js腳本語言交互的時候怎麼獲取js方法的返回值
方法:
1、通過webview訪問js腳本
2、js腳本再調用webview中的java函數把結果返回
示例代碼:
通過本地的webview打開腳本頁面。
調用步驟
1、設置webview支持腳本
webSettings.setJavaScriptEnabled(true);
2、打開腳本頁面
mWebView.loadUrl("file:///android_asset/demo.html");//這里打開該app的asset目錄下的demo.html,裡面含有wave函數腳本
3、調用腳本
mWebView.loadUrl("javascript:wave()");//調用打開頁面中的wave函數
4、webview中建立js能夠訪問
mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");//js可以通過demo訪問到DemoJavaScriptInterface類中的方法。
{
DemoJavaScriptInterface(){
}
publicvoidclickOnAndroid(Stringresult){
System.out.prinltn("返回的結果"+result);
}
}
5、js訪問webview方法
<scriptlanguage="javascript">
functionwave(){
alert("1");
window.demo.clickOnAndroid('結果1');//返回結果,調用java方法
}
</script>
❷ Android:最全面的 Webview 詳解
WebView是一個基於webkit引擎、展現web頁面的控制項。
一般來說Webview可單獨使用,可聯合其子類一起使用,所以接下來,我會介紹:
常見用法:Back鍵控制網頁後退
配置步驟1:添加訪問網路許可權 (AndroidManifest.xml)
配置步驟2:生成一個WebView組件(有兩種方式)
配置步驟3:進行配置-利用WebSettings子類 (常見方法)
常見用法:設置WebView緩存
注意: 每個 Application 只調用一次 WebSettings.setAppCachePath(),WebSettings.setAppCacheMaxSize()
常見方法1:shouldOverrideUrlLoading()
常見方法2:onPageStarted()
常見方法3:onPageFinished()
常見方法4:onLoadResource()
常見方法5:onReceivedError()
常見方法6:onReceivedSslError()
常見方法1: onProgressChanged()
常見方法2: onReceivedTitle()
具體請看我寫的文章 Android WebView與JS的交互方式 最全面匯總
3.4.1 不在xml中定義 Webview ,而是在需要的時候在Activity中創建,並且Context使用 getApplicationgContext()
3.4.2 在 Activity 銷毀( WebView )的時候,先讓 WebView 載入null內容,然後移除 WebView,再銷毀 WebView,最後置空。
步驟1:添加訪問網路許可權
AndroidManifest.xml
步驟2:主布局
activity_main.xml
步驟3:根據需要實現的功能從而使用相應的子類及其方法(注釋很清楚了)
MainActivity.java
❸ android中webview與js交互
移動開發中,我們經常會遇到混合開發模式,經常是在移動客戶端中增加網頁,來減少客戶端的壓力,同時也讓軟體更加靈活。廢話少說,下面直接進入主題。
webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
webView.getSettings().setAppCacheEnabled(true);
if (Constant.DEBUG) {
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//參數1 定義Android 與js交互的介面, 參數2 與js交互的一個常量,可以是任意一個常量字元串,
但是h5網頁調用的時候需要增加這個參數二:handler
public class JSInterface{
@JavascriptInterface//這個標注必須加上 表示js要調用的方法,可以自動識別
public void getShareInfo(String strings) {
//todo android dosomething
}
}
那麼 js端該如何調用這個方法呢\
android 和ios的調用方法不一樣 因此 h5裡面需要區別andorid和ios機型來分別調用移動端方法
如android:
//handler 是與android 約定的常量(最好做成全局通用的常量)
//getShareInfo 是與android 定義的調用方法
以上常量、方法、參數類型 必須一致才能成功調用
WebView提供兩個事件回調類給應用層,分別為WebViewClient,WebChromeClient開發者可以繼承
這兩個類,接手相應事件處理。WebViewClient 主要提供網頁載入各個階段的通知,比如網頁開始
載入onPageStarted,網頁結束載入onPageFinished等;WebChromeClient主要提供網頁載入過程
中提供的數據內容,比如返回網頁的title,favicon等。
有需要監聽載入網頁進度
//需要webBar的可以自定義增加一個webBar
最後,就是大家都知道的webView.loadUrl(url);//url需要載入的網頁
那麼,如何在android調用js的方法呢
//getMsg() 為js裡面暴露的方法
在銷毀的時候:
protected void onDestroy() {\
super.onDestroy();\
if (webView != null) {\
webView.loadUrl("about:blank");\
webView.destory();\
}\
}
❹ 安卓Webview 與 vue h5 使用js交互
總的來說都是使用安卓webview.loadUrl(url)載入頁面
url為在線網頁連接
將打包好的網頁資源放入安卓靜態目錄
載入目錄為
Android 調用 JS 有兩種方式,都是通過 WebView 的方法:
webview.loadUrl()
webview.evaluateJavascript()
js方法
vue需要把方法掛載到windows
通過映射js object暴露給js操作
安卓
h5調用
經常需要適配安卓和ios
加入以下機型判斷
Android與H5交互——JSBridge - (jianshu.com)
❺ Android WebView與H5交互
可以通過registerHandler()用來注冊一個java函數,來實現js回調的handler
Js做如下聲明
MainActivity
activity_main.xml
wx.html
附上一篇 傳送門
❻ androidwebview載入本地js怎麼實現交互
WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />
第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加許可權,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>
❼ Android WebView原生與網頁交互常用知識點
2.1 獲取cookie
【WebView】Android WebView中的Cookie操作
如果需要構造特定的referrer請求的,比如盜圖這種特殊業務時實踐過程
實際訪問地址: https://www..com
實際訪問地址要校驗的referrer: https://www.google.com
1、將要訪問的實際地址抓換為訪問referrer的地址
2、設置Android的瀏覽器支持JavaScript對Referrer的獲取
3、設置如果請求的是構造的那個Referrer的這個請求,則創建一個本地的偽造response
完整例子
❽ Android webView 注入js文件,及交互
0.js文件:
鏈接:https://pan..com/s/1MaWKxgkYgQTVQCgn8-dxLg
提取碼:o6wy
3.添加js要調用的Android方法
4.添加(JsBridge:js中調用Android方法的對象名)
5.注入js
6.Android調用js方法傳值給js
步驟3中發送了處理後的消息,在webactivity中接受消息並處理:
數據示例:(參數需要使用單引號包著)
else中對應的
callbackResult('sr1557665118336','{"data":"test"}')
if中對應的
javascript:callbackResult('sr1557665118336','{"data":"test"}')
7.補充:eventbus消息實體封裝類
8.總結:
❾ Android開發之WebView(一)配置&小技巧
背景:原生時間緊沒時間開發任務量大的任務,而前端又閑著打醬油
方案:原生+webview混合開發
缺點:對於比較復雜的頁面,webview在性能上力不從心;且與原生通信頻繁也增加了隱藏的工作量
優點:能自帶支持動態更新(js),能充分利用人力
webview是一個基於webkit引擎,展示web頁面的控制項。Android上的webview在低版本和高版本採用了不同的webkit版本內核,Android4.4(19)後直接使用了Chrome內核;WebView控制項功能強大,除了具有一般View的屬性和設置外,還可以對url請求,頁面載入,渲染,頁面交互進行強大的處理。一般來說webview可單獨使用,也可聯合其工具類一起使用
移動應用的主體是webview,主要以網頁語言編寫,穿插Native功能的Hybrid App開發類型。激活webview為活躍狀態,能正常執行網頁的響應;當webview 的頁面被失去焦點切換到後台不可見狀態onPause時,需要通知自己暫停所有的動作,比如DOM的解析,plugin的執行,JavaScript的執行等
1,顯示和渲染web頁面
2,直接使用本地assets或者網路上的html文件作為布局
3,可和JavaScript進行互相調用
1,直接在布局文件里寫死
2,動態添加進viewgroup中
註:不管以哪種方式,都必須注意webview的銷毀,否則可能會造成內存泄漏最終導致內存溢出crash
下面是WebView的一些常用的方法列舉,一些已經過時的方法未列出
下面是WebSettings的一些常用的方法列舉,一些已經過時的方法就沒有寫出來了
一般不管是動態生成還是xml寫死,只要處理好了引用持有問題,就能有效的避免內存泄漏;下面是我嘗試的方案,在工具類WebViewUtils.java里封裝好,在activity銷毀的時候調用
1,清除webview緩存和記錄
2,可以設置不啟用緩存
3,H5的一些控制項標簽不支持導致的白屏
4,xml啟用軟體加速
5,通過menifest的來配置,在目標webview的activity設置
解決方案:
解決方案:
解決方案:
上一篇: Flutter入門-01-工程創建&目錄介紹
❿ Android與Webview交互
補充
- WebViewClient
- WebViewClient主要幫助WebView處理各種通知、請求事件的,比如:
- shouldOverrideUrlLoading
- onLoadResource
- onPageStart
- onPageFinish
- onReceiveError
- onReceivedHttpAuthRequest
- WebChromeClient
-WebChromeClient主要輔助WebView處理Javascript的對話框、網站圖標、網站title、載入進度等比如
- onCloseWindow(關閉WebView)
- onCreateWindow()
- onJsAlert (WebView上alert無效,需要定製WebChromeClient處理彈出)
- onJsPrompt
- onJsConfirm
- onProgressChanged
- onReceivedIcon
- onReceivedTitle
JsBridgeGithub傳送門
轉自Android與JsBridge使用原理
JsBridge重要的三點:
BridgeWebview
WebViewJavascriptBridge.js