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

本文共 2834 字,大约阅读时间需要 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); } }

转载地址:http://cfici.baihongyu.com/

你可能感兴趣的文章
最简单的使用redis自带程序实现c程序远程访问redis服务
查看>>
redis学习总结-- 内部数据 字符串 链表 字典 跳跃表
查看>>
iOS 对象序列化与反序列化
查看>>
iOS 序列化与反序列化(runtime) 01
查看>>
iOS AFN 3.0版本前后区别 01
查看>>
iOS ASI和AFN有什么区别
查看>>
iOS QQ侧滑菜单(高仿)
查看>>
iOS 扫一扫功能开发
查看>>
iOS app之间的跳转以及传参数
查看>>
iOS __block和__weak的区别
查看>>
Android(三)数据存储之XML解析技术
查看>>
Spring JTA应用之JOTM配置
查看>>
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
Oracle 物化视图
查看>>
PHP那点小事--三元运算符
查看>>
解决国内NPM安装依赖速度慢问题
查看>>
Brackets安装及常用插件安装
查看>>
Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
查看>>