Android webview解析 ,webview点击获取图片地址

本文介绍如何在Android的WebView中解析商品图片和店铺头像的URL,并实现点击WebView图片时获取图片地址的功能。通过定义内部类Hand利用Jsoup解析网页内容,然后在WebView的setWebViewClient中重写onPageFinished方法来处理页面加载完成后的操作。此外,通过设置webView的OnLongClickListener监听长按事件,达到获取图片地址的目的。

webview 解析

  1. 需求 :
    解析webview内的商品图片地址,店铺头像


定义内部类 Hand


    class Hand {
        @JavascriptInterface
      public void getImageurl(String data){
//        Log.e("网页内容", data);

          Document document=Jsoup.parse(data);
          Element dianpu=document.select("[class=lf_icon]").first();
          Element imgele=dianpu.getElementsByTag("img").first();
          String mg=imgele.attr("src");
          Log.e("店铺图片", mg);
          if(mg!=null){
              mShareshopImage=mg;
          }
          //商品
          Element element=document.select("[class=new_xq_img]").first();
          Element element2=element.getElementsByTag("img").first();
          String m=element2.attr("src");
          Log.e("图片地址", m);
          if(m!=null){
              mShareGoodImage=m;
          }
      }
    }

上面内部类把获取的body内容用Jsoup解析 获取到需要的内容。
设置webview

webView.addJavascriptInterface(new Hand(), "handler");


在webview 的setWebViewClient 方法中重写 onPageFinished 方法

    @Override
            public void onPageFinished(WebView view, String url) {
                view.loadUrl("javascript:window.handler.getImageurl(document.body.innerHTML);");
                mShareUrl=url;
                super.onPageFinished(view, url);
            }

点击webview的图片得到图片地址

直接代码

webView.setOnLongClickListener(new OnLongClickListener() {

        @SuppressLint("NewApi") @Override
        public boolean onLongClick(View v) {
            WebView.HitTestResult result=webView.getHitTestResult();
             if (result != null) {
                 int type = result.getType();
                 if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
                   String  imgurl = result.getExtra();
                   Toast.makeText(activity, imgurl, Toast.LENGTH_SHORT).show();
                   MyPopWinDow popWinDow=new MyPopWinDow(activity, MyPopWinDow.IMAGE_VIEW_POPUPWINDOW, 300, 350);
                   popWinDow.showAtLocation(v, Gravity.CENTER, 0, 0);
                 }
             }
             return true;

        }
    });
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值