最近做webview,遇到2種需求,一種是在自己服務(wù)器上的HTML中獲取數(shù)據(jù),另一種是通過自己服務(wù)器上的HTML中的超鏈接跳到另一個(gè)站點(diǎn)的HTML中,并獲取數(shù)據(jù)。
創(chuàng)新互聯(lián)公司是專業(yè)的光山網(wǎng)站建設(shè)公司,光山接單;提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行光山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
于是,總結(jié)了2種通過webview獲取網(wǎng)頁上的數(shù)據(jù)的方式:
第一種:簡單點(diǎn)的,直接通過js調(diào)java,在調(diào)用方法的過程中將數(shù)據(jù)通過方法的參數(shù)傳遞給Android端,(前提:服務(wù)端有對應(yīng)的faxun對象,而且調(diào)用的方法是showImages(String[] imgUrls))。
<span >class MyJavaScriptInterface { MyJavaScriptInterface() { } /** * js調(diào)java,顯示圖片 * * @param imgUrls */ @JavascriptInterface public void showImages(String[] imgUrls) { LogUtils.i(TAG, "imgUrls = " + imgUrls[0]); NewsDetailWebviewActivity.this.imgUrls = imgUrls; } } ... webView.addJavascriptInterface(new MyJavaScriptInterface(), "faxun");</span>
第二種:有點(diǎn)復(fù)雜,通過webview注冊一個(gè)本地接口后,然后通過java調(diào)js,拿到document對象后,解析HTML標(biāo)簽,然后數(shù)據(jù)會(huì)通過本地接口中的回調(diào)方法傳遞給Android端,(前提:HTML頁面中的meta標(biāo)簽中有對應(yīng)的reply_info名稱和content屬性,數(shù)據(jù)是封裝在content里面的json格式的字符串)。
<span >class MyWebClient extends WebViewClient { @Override public void onPageFinished(WebView view, String url) { view.loadUrl("javascript:window.getShareData.OnGetShareData(" + "document.querySelector('meta[name=\"reply_info\"]').getAttribute('content')" + ");"); super.onPageFinished(view, url); } } private class GetShareDataInterface { @JavascriptInterface public void OnGetShareData(String shareData) { if (null != shareData) { try { JSONObject shareJson = new JSONObject(shareData); title = shareJson.optString("title"); description = shareJson.optString("description"); p_w_picpathUrl = shareJson.optString("p_w_picpathUrl"); } catch (JSONException e) { e.printStackTrace(); } } } } ..... webView.setWebViewClient(new MyWebClient()); </span>
其實(shí),如果是普通的需求,兩種方式都可以解決問題,但是如果是有些HTML沒有做js調(diào)java,只是個(gè)普通的HTML,并且需要獲取頁面上的數(shù)據(jù)時(shí),只能通過第二種方式來獲取HTML上的數(shù)據(jù)了,比如獲取HTML上的title等等。
本文標(biāo)題:webview獲取網(wǎng)頁上的數(shù)據(jù)
標(biāo)題來源:http://jinyejixie.com/article10/pdcdgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站排名、網(wǎng)站策劃、電子商務(wù)、網(wǎng)站收錄、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)