亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

說說WebView那些事(header,cookie,注入js)

2019-11-08 00:30:53
字體:
來源:轉載
供稿:網友

前言

昨天路過公司外面花園時候,不知覺臘梅已經開花了,才發覺春天來了。來城市生活這幾年,完全忘記了時令的交替,只知道冷了加衣服,熱了脫衣服。好久沒感受到春天的氣息了,內心泛起一絲惆悵。城市的生活總是那么匆忙,多了一分煩躁,少了一分寧靜。

那金黃色的油菜花,粉色的桃花,白色的李子花櫻花 … 兒時 …

WebView簡介

純原生app開發,時間成本太高,現在市面上已經很多混合式開發app。那么什么是混合式?指的是在我們的頁面中嵌入html網頁。Android當中給我們提供了WebView實現這一功能。

有關WebView的一些常見方法,我這里就不再講解,網上這部分資源太多。接著我們來看看以下幾個案列。

參考文獻:

WebView詳解與簡單實現Android與H5互調

案例一header

直接上需求效果圖:

web

需求:WebView添加header,h5讀取頭部,并且隱藏底部菜單欄。

需要添加的header數據:ECR-APP:android

我們平時大多數情況使用的是loadUrl(String url)加載方法,下面我們來看另一個loadUrl構造方法。

loadUrl(String url, Map<String, String> additionalHttpHeaders)

參數additionalHttpHeaders字面上的意思是:額外的http頭部信息。這個方法是Android 2.2 (也就是API 8),WebView新增加了一個接口方法,就是為了便于我們加載網頁同時又可以發送HTTP頭信息的。

看看具體的使用:

HashMap<String, String> header = new HashMap<>(); header.put("ECR-APP", "android"); mWebView.loadUrl("http://m.test.366ec.net/Default2c.aspx",header);

馬上運行效驗一下:

web

網頁上底部的菜單已經去掉了。

案例二cookie

cookie用于記錄用戶登錄信息,用戶下次進入需要登錄的界面不再需要重復登錄。

先看看需求:

web

會一直出現登錄界面。那么怎么解決多次登錄問題?WebView會將加載的url通過http請求傳輸到服務器。那么Cookie信息會通過header傳遞過去。

設置cookie代碼如下:

PRivate void syncCookieToWebView(String url, List<String> cookies) { CookieSyncManager.createInstance(this); CookieManager cm = CookieManager.getInstance(); cm.setAcceptCookie(true); if (cookies != null) { for (String cookie : cookies) { cm.setCookie(url, cookie);//注意端口號和域名,這種方式可以同步所有cookie,包括sessionid } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLipOP_MR1) { CookieManager.getInstance().flush(); } else { CookieSyncManager.getInstance().sync(); } }

以下是調用代碼:

List<String> cookies = new ArrayList<>(); //鍵值對類型 用等號("=")連接 具體根據后臺給定 cookies.add("StoreManagerTicket=" + "加密token");//根據后臺協商而定 syncCookieToWebView("加載的地址", cookies);

CookieManager會將這個Cookie存入該應用程序/data/data/databases/目錄下的webviewCookiesChromium.db數據庫cookies表中。打開網頁,WebView從數據庫中讀取該cookie值,放到http請求的頭部,傳遞到服務器。

運行一下,看看還會出現多次登錄的問題嗎?

web

跳轉正常,沒有出現多次登錄的問題。

案例三注入js

不知道你在項目中遇到這樣的場景沒有?手機端與h5交互,提供數據支持。如調本地相機,獲取到的圖片上傳到網頁;調用定位返回地址給網頁;調用二維碼掃描界面返回掃描結果等等。

如下,有這樣一個場景,網頁上有【掃描】圖標,點擊打開手機掃描界面,掃描成功后上傳掃描結果。那么在手機端一般會有如下方法:

JsOpenScanFunction(String callbackFunction)

參數callbackFunction表示掃描成功后webview.load調用的方法并且只有一個參數(掃描結果)。

一般前端h5會這樣進行調用Android手機端打開二維碼的方法:

//callback回調方法window.JsInterface.JsOpenScanFunction(callback)

ios端會這樣調用:

window.webkit.messageHandlers.JsOpenScanFunction.postMessage(callback)

在h5端會分步處理,無疑會增加開發人員的工作量,試想一下,如果交互的地方很多,那么h5端開發人員作何感想?而且后期的維護也是一件非常繁瑣的事情,就沒有更好的方案嗎?

如果h5端可以像調用本地方法那樣簡單調用手機端方法,那不是非常fashion。

那么就需要分別在Android端和ios端分布注入js代碼,方便h5端調用。

注入的方式如下:

@Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); if (mIsAddJsCode) {//默認true mIsAddJsCode = false; mWebView.loadUrl("javascript:" + "function JsOpenScanFunction(s) {/n window.JsInterface.JsOpenScanFunction(s);/n}"); } }

onPageStarted方法下注入js方法:

function JsOpenScanFunction(s) { window.JsInterface.JsOpenScanFunction(s);}

這樣h5只需要調用JsOpenScanFunction(s)方法就可以實現不同平臺調用二維碼掃描的功能。從此媽媽在已不擔心多端調用的問題了。

注意:JsOpenScanFunction(s) 方法,需要前端和移動端事先約定。

文章就講到這里了,如果有什么不對的地方還請指出,有什么好的意見請給我留言,我會在第一時間給予回復。

樓主不才,新建了QQ群討論技術,歡迎大家的加入 478720016

qq

我非常喜歡【平凡世界】里的一句話。我是一個平凡的人,但一個平凡的人,也可以過得不平凡。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品日韩精品| 中文字幕亚洲欧美日韩2019| 久久国产加勒比精品无码| 九九九热精品免费视频观看网站| 国产亚洲精品成人av久久ww| 久久精品国产96久久久香蕉| 精品无码久久久久久国产| 国产精品成人免费视频| 欧美亚州一区二区三区| 欧美性xxxxx极品娇小| 欧美日韩亚洲一区二区| 成人免费大片黄在线播放| 精品偷拍一区二区三区在线看| 欧美另类第一页| 最近更新的2019中文字幕| 国产精品一区二区三区毛片淫片| 日韩中文字幕在线免费观看| 欧美性视频在线| 亚洲第一天堂无码专区| 亚洲一区二区三区视频播放| 久久久久久久久久国产| 亚洲精品日韩欧美| 91视频88av| 国语自产精品视频在线看| 国产精品久久97| 日韩av色在线| 欧美精品aaa| 日韩视频精品在线| 久久免费视频网站| 亚洲欧美日韩成人| 日韩电影免费在线观看| 日韩成人在线视频观看| 中文字幕欧美视频在线| 日韩av日韩在线观看| 色黄久久久久久| 91国自产精品中文字幕亚洲| 久久中国妇女中文字幕| 国产亚洲视频在线观看| 亚洲一区二区久久久| 欧美乱妇高清无乱码| 国产极品精品在线观看| 国产视频一区在线| 青草青草久热精品视频在线网站| 78m国产成人精品视频| 久久久免费在线观看| 日韩av电影院| 欧美性生交大片免网| 国产成人亚洲综合91精品| 在线观看国产欧美| 欧美视频13p| 97超级碰碰碰| 亚洲偷欧美偷国内偷| 一区二区三区在线播放欧美| 成人性生交大片免费观看嘿嘿视频| 日韩二区三区在线| 久久影视电视剧免费网站清宫辞电视| 欧美最猛性xxxxx亚洲精品| 美乳少妇欧美精品| 精品日韩中文字幕| 91av在线免费观看| 国产成人精品久久二区二区91| 日韩性xxxx爱| 精品久久久久久久久久久| 日本精品久久电影| 欧美成人午夜免费视在线看片| 精品久久久91| 成人有码视频在线播放| 海角国产乱辈乱精品视频| 久久久精品免费| 亚洲免费福利视频| 国产亚洲精品久久久久久牛牛| 欧美性xxxx18| 国产美女直播视频一区| 97视频在线播放| 国产网站欧美日韩免费精品在线观看| 日韩中文字幕在线播放| 亚洲精品videossex少妇| 欧美日韩亚洲视频一区| 日本精品视频在线播放| 奇米成人av国产一区二区三区| 久久久天堂国产精品女人| 欧美亚洲国产精品| www亚洲精品| 97视频免费看| 国产精品自拍偷拍| 欧美日韩激情视频8区| 成人午夜激情免费视频| 精品国偷自产在线视频| 岛国精品视频在线播放| 国产精品视频自拍| 欧美乱大交xxxxx| 久久久精品久久久| 欧美激情手机在线视频| 久久男人av资源网站| 精品亚洲男同gayvideo网站| 国产精品欧美风情| 亚洲一品av免费观看| 精品国产91久久久| 亚洲精品91美女久久久久久久| 国产成人精品视频在线| 综合国产在线观看| y97精品国产97久久久久久| 亚洲精品一区二区网址| 91亚洲精品视频| 国产中文欧美精品| 亚洲欧美国产精品久久久久久久| 欧美性xxxx18| 中文字幕亚洲综合久久筱田步美| 欧美性猛交xxxx乱大交极品| 一区二区成人av| 日本sm极度另类视频| 欧美俄罗斯乱妇| 91精品视频播放| 成人有码视频在线播放| 国产激情久久久| 最新国产精品拍自在线播放| 91免费福利视频| 国产亚洲成av人片在线观看桃| 黑人巨大精品欧美一区二区三区| 色琪琪综合男人的天堂aⅴ视频| 欧美极品美女视频网站在线观看免费| 亚洲高清免费观看高清完整版| 欧美老肥婆性猛交视频| 久久精品国产亚洲7777| 亚洲日本成人网| 欧美性少妇18aaaa视频| 亚洲黄色片网站| 丰满岳妇乱一区二区三区| 国产精品免费电影| 色中色综合影院手机版在线观看| 亚洲国产一区二区三区四区| 亚洲日韩中文字幕| 日韩av在线网址| 亚洲欧洲激情在线| 欧美伦理91i| 中文字幕亚洲欧美在线| 欧美性色xo影院| 亚洲日本成人女熟在线观看| 色婷婷av一区二区三区在线观看| 亚洲视频视频在线| 中文字幕精品一区二区精品| 欧美丰满少妇xxxx| 91av成人在线| 亚洲精品狠狠操| 日韩a**站在线观看| 亚洲色图色老头| 欧美在线一级va免费观看| 欧美第一淫aaasss性| 久久精品亚洲国产| 国外成人在线播放| 欧美激情一区二区三区高清视频| 欧美成人午夜激情视频| 不卡av电影在线观看| 91在线无精精品一区二区| 久久国产精品电影| 91亚洲精品一区| 亚洲欧美激情在线视频| 国产精品自拍偷拍| 久久91超碰青草是什么| 米奇精品一区二区三区在线观看| 国产精品视频一区二区三区四| 亚洲色图国产精品| 久久精品久久久久电影| 日韩av一区在线观看|