首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在android WebView中开启长按动作下载图片?

在Android WebView中开启长按动作下载图片,可以通过以下步骤实现:

  1. 首先,需要在AndroidManifest.xml文件中添加网络权限,以便应用可以访问网络资源。在<manifest>标签内添加以下权限:
代码语言:xml
复制
<uses-permission android:name="android.permission.INTERNET" />
  1. 在布局文件中添加一个WebView组件:
代码语言:xml
复制
<WebView
    android:id="@+id/webView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  1. 在Java代码中,找到WebView并设置WebViewClient以及WebChromeClient:
代码语言:java
复制
WebView webView = findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
  1. 接下来,需要在WebViewClient中重写shouldOverrideUrlLoading方法,以便拦截长按事件并执行下载操作。在shouldOverrideUrlLoading方法中,判断URL是否以图片格式结尾,如果是,则使用DownloadManager下载图片:
代码语言:java
复制
webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.endsWith(".jpg") || url.endsWith(".png") || url.endsWith(".gif")) {
            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
            request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "image.jpg");
            DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
            downloadManager.enqueue(request);
            return true;
        }
        return false;
    }
});

在上述代码中,我们判断URL是否以.jpg、.png或.gif结尾,如果是,则创建一个DownloadManager.Request对象,并设置下载通知的可见性以及下载文件的保存路径。然后,通过DownloadManager.enqueue方法将下载请求加入下载队列。

  1. 最后,需要在AndroidManifest.xml文件中添加下载权限,以便应用可以进行文件下载。在<manifest>标签内添加以下权限:
代码语言:xml
复制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

完成上述步骤后,当用户在WebView中长按图片时,会触发shouldOverrideUrlLoading方法,判断URL是否为图片格式,如果是,则会自动下载该图片到设备的下载目录中。

推荐的腾讯云相关产品:腾讯云移动浏览器(Tencent MTT),产品介绍链接地址:https://mtt.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android使用webView长按保存下载网络图片

本文实例为大家分享了Android使用webView长按保存下载网络图片的具体代码,供大家参考,具体内容如下 最近发现在webView的setOnLongClickListener可以获取到WebView.HitTestResult...通过判断Type的类型获取点击图片的url,然后把图片下载到本地,发送广播通知系统图库进行更新,在系统图库查看下载图片。...运行Demo在网页图片长按点击即可下载网络图片 直接上代码: 下面附有Demo下载:点击打开链接 package demo.sam.webview_demo; import android.app.Activity...(editText.getText().toString().trim()); } }); // 长按点击事件 webView.setOnLongClickListener(new View.OnLongClickListener...= null){ webView.goBack(); return true; } } return super.onKeyDown(keyCode, event); } } 图片下载的工具类

1.3K51

WebView深度学习(二)之全面总结WebView遇到的坑及优化

; } ---- (7)怎么在 WebView长按保存图片?...: break; case WebView.HitTestResult.IMAGE_TYPE: // 处理长按图片的菜单项...解决方案:在EditText中加入一句: android:layerType=”software” 图片无法显示: 做的程序里有的时候会需要加载大图,但是硬件加速 OpenGL对于内存是有限制的...(2)加快HTML网页加载完成的速度,等页面finish再加载图片   默认情况html代码下载WebView后,webkit开始解析网页各个节点,发现有外部样式文件或者外部脚本文件时,会异步发起网络请求下载文件...,但如果在这之前也有解析到image节点,那势必也会发起网络请求下载相应的图片

5.6K30

WebView开源库终极方案

//设置是否开启密码保存功能,不建议开启,默认已经做了处理,存在盗取密码的危险 mWebView.setSavePassword(false); //是否开启软硬件加速 mWebView.setOpenLayerType...:js把消息队列的所有消息都一起回传给webView; 第八步操作:webView收到所有的消息,一个一个串行处理,注意其中包括 "functionInJs"方法运行的结果的消息; js调用Android...4.4.2 定制js的alert,confirm和prompt对话框 4.4.3 x5长按图片如何操作 4.4 4 x5长按文字内容如何自定义弹窗 4.4.5 webView.goBack()会刷新页面吗...4.5.0 如何屏蔽掉WebView长按事件 4.5.1 WeView出现OOM影响主进程如何避免 4.5.2 WebView域控制不严格漏洞 4.5.3 下载文件时的路径穿越问题 4.5.4 WebView...5.0.2 加快加载webView图片资源 5.0.3 自定义加载异常error的状态页面 5.0.4 WebView硬件加速导致页面渲染闪烁 5.0.5 WebView加载证书错误 5.0.6

3K30

Android WebView实现长按保存图片长按识别二维码功能

先来简单说一下本文所要实现的功能:用户在浏览网页的时候,长按某一区域,识别如果是图片,则弹出弹框,出现保存图片的功能。同时识别图片是否是二维码,如果是则在弹框追加识别二维码功能。...code.gif 上述功能所用到的类和库: 获得长按内容: WebView.HitTestResult 弹框列表: DialogFragment 图片下载: Glide 二维码识别: Zxing 实现要点...可以看到通过 WebView.HitTestResult ,我们可以获得除了图片外的很多内容类型。当然这里我们只需要判断是否是图片就好了,然后将长按位置和url一起回调给外层。..., Glide 自带预加载和图片缓存功能,不需要每次都从网络中下载: GlideApp.with(appContext).asFile().load(url).submit().get(); 可以在长按识别出图片的时候就行预加载...最后贴下本项目github地址,对 WebView 感兴趣的可以了解下: github 总结 以上所述是小编给大家介绍的Android WebView实现长按保存图片长按识别二维码,希望对大家有所帮助

4K60

Android使用WebView开发常见的坑

app");这个方法的别名android是否与JS的对象名称一致 <a onclick="window.app.onclick('www...5、<em>WebView</em><em>长按</em>弹出ActionMode菜单样式问题 三星手机<em>WebView</em>弹出的菜单样式有可能会出现此问题,解决方法可以继承<em>WebView</em>重写startActionMode()方法,然后修改menu...,可以注册<em>WebView</em>的<em>长按</em>事件 mWebView.setOnLongClickListener(v -> { return true; }); 6、硬件加速问题 一般情况下,使用<em>WebView</em>..., null); 但是简单的使用以上两种方法,<em>开启</em>硬件加速以及不<em>开启</em>硬件加速在一些手机上都会出现这样或者那样的问题,例如,如果一直<em>开启</em>了硬件加速,某些手机有可能会出现屏幕花屏的问题;还有<em>WebView</em>在不同厂商的手机<em>中</em>依然可能会出现...而Crash的问题一般是报了<em>WebView</em>底层的错误。可以参考以下处理方式: 在onPageStart<em>中</em><em>开启</em>硬件加速,在onPageFinish<em>中</em>关闭硬件加速。

1.8K10

那些年在WebView上踩过的坑

之前我在Android中使用WebView与JS交互全解析一文,介绍了通过Webview和JS的交互方式,但Webview这个控件简直是让人又爱又恨,各种你想不到的错误在各种奇怪的手机上,各种不一样的版本里...问题描述: 当你的程序调用了WebView加载网页,WebView会自己开启一些线程,如果你没有正确地将WebView销毁的话,这些残余的线程会一直在后台运行,由此导致你的应用程序耗电量居高不下。...: rootLayout.removeView(webView); webView.destroy(); 14.处理WebView的非超链接请求(Ajax请求) 有时候需要加上请求头,但是非超链接的请求...长按事件,因为webview长按时将会调用系统的复制控件 mWebView.setOnLongClickListener(new OnLongClickListener() {...图片延迟加载: 有些页面如果包含网络图片,在移动设备上我们等待加载图片的时间可能会很长,所以我们需要让图片延时加载,这样不影响我们加载页面的速度: 定义变量: boolean blockLoadingNetworkImage

1.8K31

Android 2.0 --- 2.3 API变更概要:

Android 2.0 API变更概要:  1、Bluetooth   · 开启关闭蓝牙   · 设备和服务发现   · 使用 RFCOMM连接一个可插拔的设备收发数据   · 公布...  · 新的快速通信framework APIs 允许开发者在他们的应用创建通信标记, 一键点击标记打开一个新的窗口展示一个如何联系当前人的列表.  5、WebView   · 不赞成使用的类...如果用户切换到另一个Android设备,他就可以从之前的设备恢复数据。  2、Cloud-to-Device消息API。云中的用户/系统可以凭借这种增强在设备上触发动作。...现在可以直接从浏览器访问大量的设备API,加速器、相机、声音识别、翻译等,这样Web应用就能以前所未有的方式与设备交互了。...下载管理  在Android 2.3新增的下载管理支持长时间运行的Http下载服务支持。可以保证在手机重启后仍然重试下载等操作,整个过程在后台执行。

54640

这是一份Android全面&详细的-Webview使用攻略

目录 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sNTzdRBr-1640421131904)(https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx...,能正常执行网页的响应 webView.onResume() ; //当页面被失去焦点被切换到后台不可见状态,需要执行onPause //通过onPause动作通知内核暂停所有的动作,比如DOM的解析...我们可以关闭loading 条,切换程序动作。...view, String url) { //设定加载资源的操作 } }); 常见方法5:onReceivedError() 作用:加载页面的服务器出现错误时(404...3.4.1 不在xml定义 Webview ,而是在需要的时候在Activity创建,并且Context使用 getApplicationgContext() LinearLayout.LayoutParams

3.7K20

自动化-Appium-常用API(Python版)

context可以理解为可进入的窗口,如果是native则为native_app,如果是webview为对应webview。...driver.press_keycode(4) 17、长按住按键 给设备发送一个长按住按键事件,仅支持Android。按键值参考按键码列表。...],500) driver.tap([(100, 20), (100, 60), (100, 100)], 500) 35、触控操作(TouchAction) TouchAction的原理是将一系列的动作放在一个链条...driver.pull_file('Library/AddressBook/AddressBook.sqlitedb') 38、下载文件夹 将设备上的文件夹下载到本地,一般远程文件为/data/local...driver.is_ime_active() 57、激活指定输入法 激活Android设备的指定输入法,设备可用输入法可以从available_ime_engines命令获取,仅支持Android

1.3K20

Android 使用腾讯X5内核, Webview浏览器拍照或从相册上传图片

阅读文章需要几分钟,不妨早上听听歌 开启新的一天!Go! ? ? 最近在项目开发,需要使用WebView上传文件。默认情况下情况下,使用AndroidWebView是不能够支持上传文件的。...在Android 5.0之后,系统提供了onShowFileChooser来让我们实现选择文件的方法,仍然有ValueCallback,在FileChooserParams参数,同样包括acceptType...下面我们将介绍怎么通过使用腾讯X5 Webview浏览器实现拍照或从相册上传图片功能。...使用腾讯X5 Webview浏览器 TBS腾讯浏览器服务官网:http://x5.tencent.comjar包下载:http://x5.tencent.com/doc?...uploadMsg) { mUploadMessage = uploadMsg; choosePicture(); } } 这里选择图片使用了三方图片选择组件

1.9K30

android 复制控件,Android长按复制文本功能

安卓一般能用到长按复制的控件Textview,Editext,可能也有WebView 在开始之前先说一个我遇到的一个坑: viewGroup中有一个这个属性android:descendantFocusability...orderDetailsTvOrderNumber.getText().toString()); //ToastUtil.toastSth(getContext() , “文本已复制,快去粘贴吧~”); Textview 其实单单考虑长按复制...:textIsSelectable=”true” Webview webview在加载链接之前想长按复制链接,其实原理也还是现获取webview要加载的内容然后把它复制到剪贴板 获取选中的内容要调用webView...的未公开函数getSelection 因此通过反射: Method m = WebView.class.getMethod(“getSelection”, null); m.setAccessible...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.5K20

应用宝基于Robotium自动化测试(上)

图3.Eclipse配置关联private jar b) 关联外引用jar包的源码 关联外引用jar包的源码,这里主要关联Android SDK的源码,右键android.jar,进入Java Source...输入H5页面链接,:http://xxx.xxx.xxx/index.html ?...,并安装有Chrome Android版本; (4)用于app debugging:需要Android4.4及以上版本,并将WebView设置为可调试。...新版的UiAutomator随Android Support Repository发布,可通过SDK Manager下载,以2.1.0版本为例,位于如下所示的路径: %ANDROID_HOME%\extras...图11.解压aar文件 如图12所示,应用宝在通知栏开启了快捷工具栏,测试此功能时需要开启通知栏,并点击工具栏的按钮,这样的操作仅通过Robotium框架是无法完成的,此时就可以结合UiAutomator

1.9K60
领券