温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中WebView获取网页中标题 ,内容, 图片的方法

发布时间:2020-06-08 10:01:43 来源:网络 阅读:10641 作者:拾荒者老大 栏目:移动开发

如题,在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