0

我四处搜索,大多数答案都与静态图像有关,即只有一张图像,并且 URL 已经预先定义。

我设置了一个 WebView 来将用户带到一个充满照片的网站。我希望用户能够按住图像并选择将其保存到手机。那可能吗?我当然不知道 URL 或任何东西,因为图像每天都在变化,而且数量很多。

如果这有什么不同的话,网站上的图片都有自己的页面。它只是一个带有图像的网站。无需身份验证。就像在桌面上您可以右键单击并保存图像一样,我可以使用 WebView 来做到这一点吗?必须有一种方法,因为它在默认浏览器中是可能的。

编辑:我一直在使用一个名为“Reddit 很有趣”的应用程序,它具有此功能,从表面上看,它看起来像一个带有操作栏的简单 WebView,所以我认为这是可能的。

我将不胜感激这件事的任何帮助。

4

2 回答 2

1

是的,我想通了。

使用上下文菜单,我可以按住图像以提取其 URL。然后我可以让它使用 DownloadManager 启动下载。那一点是不言自明的,所以我将展示获取图像 URL 的代码。

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    // Confirm the view is a webview
    if (v instanceof WebView) {                
        WebView.HitTestResult result = ((WebView) v).getHitTestResult();

        if (result != null) {
            int type = result.getType();

            // Confirm type is an image
            if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
                String imageUrl = result.getExtra();
                Toast.makeText(this, imageUrl, Toast.LENGTH_LONG).show();

            }
        }
    }
}
于 2013-04-22T22:14:10.700 回答
0

我认为一个不错的解决方案是将javascript与WebView.addJavascriptInterface(Object,String)结合使用,以便在渲染图像和您的活动之间建立“桥梁”。关于这种方法的一篇不错的文章在这里

本质上,您应该能够通过 javascript 拦截每个图像 url 上的保持事件,然后您应该通过上述方法将此类信息发送到您的 Activity 以执行您想做的任何事情。

于 2013-04-18T19:41:22.310 回答