时间:2021-05-19
前言
项目中有需求在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中长按图片点击下载功能了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文介绍了Android中js和原生交互的示例代码,分享给大家,具体如下:加载webview的类publicclassMainActivityextendsAc
1.android中利用webview调用网页上的js代码。Android中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webvie
本文实例讲述了Android编程使用WebView实现与Javascript交互的方法。分享给大家供大家参考,具体如下:Android中可以使用WebView加
Android设备多分辨率的问题Android浏览器默认预览模式浏览会缩小页面WebView中则会以原始大小显示Android浏览器和WebView默认为mdp
本文实例讲述了Android中WebView图片实现自适应的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:WebSettingsws=tv.g