Android webView长按保存下载网络图片实现
49 浏览量
更新于2024-08-28
收藏 56KB PDF 举报
本文主要介绍了如何在Android应用中利用WebView实现长按图片并保存到本地的功能。通过监听WebView的长按事件,获取点击的图片URL,并进行下载操作,最后通过发送广播更新系统图库,使得用户可以在图库中查看下载的图片。
在Android开发中,WebView是一个非常重要的组件,它允许我们在应用内展示网页内容。当用户在WebView中长按时,我们可以获取到WebView.HitTestResult对象,这个对象提供了关于长按位置的信息。我们可以通过检查HitTestResult的Type属性来判断是否是图片,如果是图片,就可以进一步处理,例如下载。
以下是一段示例代码,展示了如何在WebView的长按事件中实现图片下载:
```java
package demo.sam.webview_demo;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebView.HitTestResult;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private String imageUrl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化WebView
webView = findViewById(R.id.web_view);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true); // 启用JavaScript
webView.setWebViewClient(new WebViewClient()); // 设置WebViewClient
// 长按事件处理
webView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
HitTestResult result = webView.copyBackForwardList().getHitTestResult();
if (result != null && result.getType() == HitTestResult.SRC_IMAGE_TYPE) {
imageUrl = result.getExtra();
// 进行图片下载操作
downloadImage(imageUrl);
return true;
}
return false;
}
});
// 加载网页
webView.loadUrl("http://yourwebsite.com");
}
private void downloadImage(String url) {
// 下载图片代码...
// 发送广播更新系统图库
Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri contentUri = Uri.fromFile(new File("/path/to/downloaded/image.jpg"));
mediaScannerIntent.setData(contentUri);
sendBroadcast(mediaScannerIntent);
}
}
```
在上面的代码中,`onLongClick`方法监听了WebView的长按事件,如果长按的是图片,就调用`downloadImage`方法进行下载。`downloadImage`方法会执行实际的下载逻辑,并在下载完成后发送一个广播通知系统图库进行更新。
请注意,这只是一个基本示例,实际的图片下载可能需要处理更多细节,如错误处理、进度显示、文件重命名等。在生产环境中,你可能还需要考虑使用异步任务或服务来处理图片下载,以避免阻塞UI线程。
通过WebView提供的HitTestResult和长按事件,我们可以实现对网页内图片的交互,提供类似浏览器的图片保存功能,增强用户体验。同时,结合Android系统的图库功能,用户可以方便地查看和管理下载的图片。
2021-01-05 上传
258 浏览量
2020-08-28 上传
115 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
weixin_38688890
- 粉丝: 6
- 资源: 964
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍