溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中WebView獲取網頁中標題 ,內容, 圖片的方法

發布時間:2020-06-08 10:01:43 來源:網絡 閱讀:10631 作者:拾荒者老大 欄目:移動開發

如題,在Android中WebView獲取網頁中標題 ,內容, 圖片的方法

首先是獲取標題,在new WebChromeClient(){}中重寫onReceivedTitle()方法

@Override
			public void onReceivedTitle(WebView view, String title) {
				super.onReceivedTitle(view, title);
//				loge.e("__頁面標題__"+title);
			}

2016-5-11注:看別的項目看到的,也可以在

onProgressChanged(WebView view, int newProgress)

方法里直接獲取網頁標題

view.getTitle()

獲取內容,是參考的這邊的

http://blog.csdn.net/hellohaifei/article/details/9331631

首先是除了最基本的那些再多添加一堆設置

		WebSettings settings = mWebview.getSettings();
		mWebview.addJavascriptInterface(new InJavaScriptLocalObj(), "local_obj"); 
		settings.setSupportZoom(true);    
		settings.setDomStorageEnabled(true);    
        mWebview.requestFocus();    
        settings.setSupportZoom(true);    
        settings.setBuiltInZoomControls(true);

然后是寫個類

public final class InJavaScriptLocalObj {    
        @JavascriptInterface  
        public void showSource(String html) {    
        	Log.e("", "______"+html+"____");
        }    
    }

最后是在new WebViewClient(){}的onPageFinished()方法里加上調用js方法

@Override
			public void onPageFinished(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onPageFinished(view, url);
				/**這個是為了加載網頁內容*/
				view.loadUrl("javascript:window.local_obj.showSource(document.getElementsByTagName('article')[0].innerText);");   
			}

這個方法語句和參考的網頁有點不一樣,那個是打印全部的信息,包括一些標簽,而這個只是打印網頁純文本內容.

后來因為產品要求,分享不帶內容,分享說明直接按微信來,放網址,不過圖片要放第一張圖,所以,就得把上面的句子改一下了

/**這個是加載網頁首圖的*/
				view.loadUrl("javascript:window.local_obj.showSource(document.getElementsByTagName('img')[0].src);");

兩個都需要就得另外寫了,具體不知道

因為代碼有混淆,所以需要在proguard-project.txt里說明

#webview與js交互需注意
#保留annotation, 例如 @javascriptInterface 等 annotation
-keepattributes *Annotation*

#保留跟 javascript相關的屬性 
-keepattributes JavascriptInterface

#保留JavascriptInterface中的方法
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

#這個根據自己的project來設置,這個類用來與js交互,所以這個類中的 字段 ,方法, 等盡量保持
-keepclassmembers public class com.tugouzhong.activity.WebviewActivity{
   <fields>;
   <methods>;
   public *;
}
#這個類 必須保留,這個類在WVJBWebViewClient中傳遞數據,如果被混淆 會導致一些callback無法調用
-keep class com.packgename.custom.WVJBWebViewClient$WVJBMessage
#類中成員的變量名也不能混淆,這些變量名被作為json中的字段,不能改變。
-keepclassmembers class com.tugouzhong.activity.WebviewActivity$InJavaScriptLocalObj{
    <fields>;
}

網上找到,測了沒問題,先湊合用

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女