我四处搜索,大多数答案都与静态图像有关,即只有一个图像,而URL已经预先定义。
我设置了一个WebView,可以将用户带到一个充满照片的网站。我希望用户能够按住图像并获得将其保存到手机的选项。那可能吗?我当然不知道URL或任何东西,因为图像每天都在变化,而且有很多。
如果有任何区别,网站上的图片都有自己的页面。它只是一个带图像的网站。无需身份验证。就像在桌面上一样,您可以右键单击并保存图像,我可以使用WebView执行此操作吗?必须有一种方法,因为它可以在默认浏览器中使用。
编辑:我一直在使用一个名为'Reddit is fun'的应用程序,它具有此功能,从表面看,它看起来像一个简单的带有操作栏的WebView,所以我认为它是可能的。
我很感激任何帮助。
答案 0 :(得分: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();
}
}
}
}
答案 1 :(得分:0)
我认为一个很好的解决方案是将javascript与WebView.addJavascriptInterface(Object,String)结合使用,以便在渲染图像和Activity之间形成“桥梁”。关于这种方法的一篇好文章是here。
基本上你应该能够通过javascript拦截每个图像网址上的保持事件,然后你应该通过上面的方法将这些信息发送到你的活动,以便做任何你想做的事。