首页 > 代码库 > [掌眼]Android WebView Long Press长按保存图片到手机
[掌眼]Android WebView Long Press长按保存图片到手机
具体效果可见“掌眼”掌拍古玩江湖: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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。