前言
项目中有需求在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