[掌眼]Android(安卓)WebView Long Press长按保存图片到手机
16lz
2021-01-24
具体效果可见“掌眼”掌拍古玩江湖: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测试: 或关注微信公众号:
更多相关文章
- Android(安卓)Unparsed aapt error(s)! Check the console for o
- android设置手机横屏与竖屏无效的解决方法
- android技术选型(持续更新中...)
- Ubuntu 下android 开发,eclipse不能识别手机
- android中EditText只允许输入汉字(过滤汉字)
- Android下载文件提示文件不存在。。。 java.io.FileNotFoundExce
- Android(安卓)8.0 启动速度优化工具
- Android(安卓)Bitmap相关
- [Android] 调用系统裁切图片的 !!! FAILED BINDER TRANSACTION !