当前位置: 首页 > 编程笔记 >

Android 保存WebView中的图片示例

斜光耀
2023-03-14
本文向大家介绍Android 保存WebView中的图片示例,包括了Android 保存WebView中的图片示例的使用技巧和注意事项,需要的朋友参考一下

前言

项目中有需求在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中长按图片点击下载功能了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Android使用webView长按保存下载网络图片,包括了Android使用webView长按保存下载网络图片的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android使用webView长按保存下载网络图片的具体代码,供大家参考,具体内容如下 最近发现在webView的setOnLongClickListener中可以获取到WebView.HitTestResul

  • 图片保存 将需要的内容保存在独立的文件里便于之后的导出。(存储于 Web 所用格式 Alt + Shift + Ctrl + S) 如需保存独立图层则要把需要的图层拖到新建的透明背景的图层,或在图层上右键复制(Duplicate)图层选择地址为新文件即可。 图片与背景合并的切图方法如下 保存格式的选择 保存类型一:色彩丰富切无透明要求时保存为 JPG 格式并选用时候的品质(通常使用品质 80 )。

  • 问题内容: 我的应用程序使用了很多图片,这些图片是从Internet下载并在Android手机上本地缓存的。我想知道,保存这些图片的正确方法是什么。我认为有几种方法不能完全令人满意。 将它们保存在公共文件夹中的SD卡上 占用了无法在卸载时释放的空间 用户可以在图库中查看照片 在sdcard根目录上需要一个文件夹(您实际上可以在浏览手机时看到它) 将它们保存在非公共文件夹中的SD卡上 占用了无法在卸

  • 本文向大家介绍Android中布局保存成图片实例代码,包括了Android中布局保存成图片实例代码的使用技巧和注意事项,需要的朋友参考一下 一、前言 有一个朋友问做过截屏的小功能没,自己没有做过。但是想了一下,实现的过程。实现截屏就是为了截取咱们应用中的部分布局,然后实现将保存在本地,或将其分享,或将其通过第三方的平台分享出去。自己可能是受了截屏这两个字的影响,想当然的去梳理自己的实现思路。 1:

  • 我正在做一个android项目(java),在这个项目中,我想使用webview来显示一个通过使用FileChooser从Phone的存储中选择的图像。在我的java代码中,我有 欢迎任何建议。

  • 问题内容: 通过下面的代码,我已经能够保存cookie,但是一旦关闭应用程序,cookie就会消失。 这是怎么引起的,我该如何解决? 问题答案: 您必须告诉CookieSyncManager 在 加载有问题的页面 后 进行同步。在您的示例代码中,该方法在尝试加载页面之前完全执行,因此同步过程(异步发生)可能会在加载页面之前完成。 相反,告诉CookieSyncManager同步WebViewCli