Android 保存WebView中的图片示例

作者:人言落日是天涯 时间:2021-10-05 21:57:05 

前言

项目中有需求在APP的Webview中长按图片可以保存。后来就去研究一下该怎么实现,顺便整理了一下。

WebView基本配置


mWvContent.getSettings().setJavaScriptEnabled(true);
mWvContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWvContent.getSettings().setDomStorageEnabled(false);
mWvContent.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
// 自适应屏幕
mWvContent.getSettings().setUseWideViewPort(true);
mWvContent.getSettings().setLoadWithOverviewMode(true);

注册ContextMenu


registerForContextMenu(mWvContent);

重写下面的方法即可保存图片


@Override
 public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
   super.onCreateContextMenu(contextMenu, view, contextMenuInfo);
   final WebView.HitTestResult webViewHitTestResult = mWvContent.getHitTestResult();
   if (webViewHitTestResult.getType() == WebView.HitTestResult.IMAGE_TYPE ||
     webViewHitTestResult.getType() == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
     contextMenu.setHeaderTitle("网页中下载图片");
     contextMenu.add(0, 1, 0, "点击保存")
         .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
           @Override
           public boolean onMenuItemClick(MenuItem menuItem) {
             String DownloadImageURL = webViewHitTestResult.getExtra();
             if (URLUtil.isValidUrl(DownloadImageURL)) {
               DownloadManager.Request request = new DownloadManager.Request(Uri.parse(DownloadImageURL));
               request.allowScanningByMediaScanner();
               //设置图片的保存路径
               request.setDestinationInExternalFilesDir(WebViewActivity.this, "/img", "/a.png");                
               DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
               downloadManager.enqueue(request);
               Toast.makeText(WebViewActivity.this, "下载成功", Toast.LENGTH_LONG).show();
             } else {
               Toast.makeText(WebViewActivity.this, "下载失败", Toast.LENGTH_LONG).show();
             }
             return false;
           }
         });
   }
 }

需要添加相关权限


<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

这样就可以实现在Webview中长按图片点击下载功能了。

来源:https://www.jianshu.com/p/de2990e73cc6

标签:Android,WebView,图片
0
投稿

猜你喜欢

  • Android特效之水波纹的实现

    2022-04-30 22:55:09
  • Android开机画面的具体修改方法

    2023-05-13 20:52:22
  • c# 获取字符串的字节数的方法

    2022-01-17 13:52:50
  • Flutter开发Mac桌面应用实现自动提取生成视频字幕文件

    2023-05-11 05:25:58
  • ES结合java代码聚合查询详细示例

    2022-08-31 01:23:29
  • 一文带你吃透JSP增删改查实战案例详细解读

    2021-08-17 17:10:22
  • SpringBoot整合阿里 Druid 数据源的实例详解

    2021-07-28 17:50:32
  • IntelliJ IDEA 2021.1 推出语音、视频功能,边写代码边聊天(功能超级强大)

    2023-09-13 23:30:37
  • java中Struts2文件上传问题详解

    2023-12-16 10:27:54
  • Java简单工厂模式详细解释

    2021-09-20 16:12:07
  • android Tween Animation属性设置方法实例

    2022-07-12 22:25:19
  • java_object的简单使用详解

    2023-08-22 11:35:57
  • C#利用性能计数器监控网络状态

    2022-01-05 00:13:53
  • 微信支付仅能成功调用一次问题的解决方法(Android)

    2021-07-27 10:40:17
  • Android自定义View之自定义评价打分控件RatingBar实现自定义星星大小和间距

    2023-03-14 04:30:16
  • java 值Document解析xml详细介绍

    2021-11-13 15:59:00
  • Java实现获取指定个数的不同随机数

    2023-11-14 21:42:34
  • java基础之接口组成更新的实现

    2022-10-03 08:10:27
  • android仿支付宝密码输入框效果

    2021-08-06 12:14:01
  • C#集合查询Linq在项目中使用详解

    2022-09-16 13:50:09
  • asp之家 软件编程 m.aspxhome.com