[掌眼]Android WebView Long Press長按儲存圖片到手機

來源:互聯網
上載者:User

標籤:android   style   c   class   blog   code   

具體效果可見“掌眼”掌拍古玩江湖:http://bbs.guwanch.com

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);        }    }

 具體效果可下載APP測試:                                             或關注公眾號:                     

                   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.