博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android WebView Long Press长按保存图片到手机
阅读量:5127 次
发布时间:2019-06-13

本文共 2906 字,大约阅读时间需要 9 分钟。

首先要先注册长按监听菜单private String imgurl = "";    /***     * 功能:长按图片保存到手机     */    @Override    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        MenuItem.OnMenuItemClickListener handler = new MenuItem.OnMenuItemClickListener() {            public boolean onMenuItemClick(MenuItem item) {                if (item.getTitle() == "保存到手机") {                    new SaveImage().execute(); // Android 4.0以后要使用线程来访问网络                } else {                    return false;                }                return true;            }        };        if (v instanceof WebView) {            WebView.HitTestResult result = ((WebView) v).getHitTestResult();            if (result != null) {                int type = result.getType();                if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {                    imgurl = result.getExtra();                    menu.setHeaderTitle("提示");                    menu.add(0, v.getId(), 0, "保存到手机").setOnMenuItemClickListener(handler);                }            }        }    }    /***     * 功能:用线程保存图片     *      * @author wangyp     *      */    private class SaveImage extends AsyncTask
{ @Override protected String doInBackground(String... params) { String result = ""; try { String sdcard = Environment.getExternalStorageDirectory().toString(); File file = new File(sdcard + "/Download"); if (!file.exists()) { file.mkdirs(); } int idx = imgurl.lastIndexOf("."); String ext = imgurl.substring(idx); file = new File(sdcard + "/Download/" + new Date().getTime() + ext); InputStream inputStream = null; URL url = new URL(imgurl); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(20000); if (conn.getResponseCode() == 200) { inputStream = conn.getInputStream(); } byte[] buffer = new byte[4096]; int len = 0; FileOutputStream outStream = new FileOutputStream(file); while ((len = inputStream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } outStream.close(); result = "图片已保存至:" + file.getAbsolutePath(); } catch (Exception e) { result = "保存失败!" + e.getLocalizedMessage(); } return result; } @Override protected void onPostExecute(String result) { MsgBox("提示", result); } }

转载于:https://www.cnblogs.com/sharecenter/p/5621055.html

你可能感兴趣的文章
spring ApplicationListener接口(续)
查看>>
Java对象内存管理
查看>>
Analysis servlet
查看>>
go for range 可以方便的对slice 切片或者 map 进行迭代循环
查看>>
软件菜单
查看>>
文件上传之伪Ajax方式上传 (转子连接)
查看>>
对于新接触Html的同学的一些指导
查看>>
Django基础知识
查看>>
JDK与Tomcat的环境变量配置
查看>>
TinyURL
查看>>
【codevs1553】互斥的数
查看>>
【POJ3461】Oulipo(字符串Hash)
查看>>
在express3里用ejs模版引擎时,如何使其支持'.html'后缀
查看>>
【2017-2-19】数据类型及类型转换
查看>>
通过对HTML有一定的了解后,现在我开始学HTML DOM了。
查看>>
ruby 线程学习
查看>>
线段树之离散化
查看>>
正向地理编码-根据输入地址获取经纬度
查看>>
iOS学习笔记(二)——Hello iOS
查看>>
【转】ACM中java的使用
查看>>