【问题标题】:Java Android - Get an Image from a webviewJava Android - 从 web 视图中获取图像
【发布时间】:2016-09-23 10:04:47
【问题描述】:

所以我通过 webview 在我的 android APP 上加载了一个网站的页面及其显示。

网站上有几张图片;假设网站页面包含 3 张图片:

<img src="pic_mountain.jpg">
<img src="random_image.php">
<img src="pic_mountain_second.jpg">

我的问题是,我如何获取上面的每张图片,以便我可以在我的 Java Android 应用程序上以 Bitmap 的形式访问每张图片?

【问题讨论】:

  • 你有图片完整的网络路径吗?
  • 您只想在 webview 上显示图像?
  • @SohailZahid 是的,图片完整的网络路径是:sapsnkra.moe.gov.my/randomimage.php
  • @PreetikaKaur 不,我想获取验证码图像,并使用另一个 API 解决......所以,如果我在 webview 中加载页面,它会给我一个验证码图像......所以如何获得完全相同的验证码图像,以便我可以将其发送到另一个 API 并解决它。因为如果我对该网址进行另一个图像请求,它将发送一个不同的验证码图像。谢谢

标签: javascript java android html webview


【解决方案1】:

这里是获取 HTML 作为字符串的工作示例,该字符串加载到 webview 中,以及在将图像 url 转换为位图后如何从中获取图像 url。

将 webview 客户端设置为您的 webview,例如

webview.setWebViewClient(new WebClientClass());

下面给出webview客户端

public class WebClientClass extends WebViewClient {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if (progressDialog != null && progressDialog.isShowing())
                progressDialog.dismiss();

            wvAboutUs.evaluateJavascript(
                    "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
                    new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String html) {
                            JsonReader reader = new JsonReader(new StringReader(html));
                            reader.setLenient(true);
                            try {
                                if (reader.peek() != JsonToken.NULL) {
                                    if (reader.peek() == JsonToken.STRING) {
                                        String msg = reader.nextString();
                                        if (msg != null) {
                                            Log.d("HTML", msg);
                                            Pattern p = Pattern.compile("src=\"(.*?)\"");
                                            Matcher m = p.matcher(msg);
                                            if (m.find()) {
                                                Log.d("HTML", m.group(1)); // This will print your image url
                                            }
                                        }
                                    }
                                }
                            } catch (IOException e) {
                                Log.e("TAG", "MainActivity: IOException", e);
                            } finally {
                                try {
                                    reader.close();
                                } catch (IOException e) {
                                }
                            }
                        }
                    });
        }
    }

【讨论】:

  • 您好,感谢您的回复。我有 2 个问题: 1. 什么是“wvAboutUs”? 2. 由于 每次调用时总是生成随机图像,所以当我使用上述方法调用时,结果可能与我的 webview 中的结果不同,是吗正确的?因为我看到上面的方法会调用 random_image.php 上的另一个图像。谢谢!
猜你喜欢
  • 2014-08-22
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多