zoukankan      html  css  js  c++  java
  • Android WebView Long Press长按保存图片到手机

    <span style="font-size:18px;">首先要先注册长按监听菜单
    
    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<String, Void, String> {
            @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);
            }
        }</span>

  • 相关阅读:
    使用Pencil进行UI草图设计
    模板机制在Zend Framework
    数组/链表高效去重(算法题
    Docker常用命令总结
    vscode中的git使用
    二分搜索模板
    多年没有管理的技术博客了,即日起开始管理起技术博客
    c# office不同版本下中使用Excel
    最近在忙项目,好久不来
    中秋 国庆
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5621055.html
Copyright © 2011-2022 走看看