美文网首页Android开发经验谈
X5WebView的长按保存图片

X5WebView的长按保存图片

作者: 大校啊 | 来源:发表于2017-12-20 13:49 被阅读0次

Android基于腾讯的x5WebView的浏览页面,长按保存图片

/**
* 响应长按点击事件
* @param
*/
private void setWebImageLongClickListener() {
WebView.HitTestResult result = mX5WebView.getHitTestResult();
if (result != null) {
int type = result.getType();
if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
String longClickUrl = result.getExtra();
showDialog(longClickUrl);
}
}
}

/**
* 长按 WebView 图片弹出 Dialog
* @param url
*/
private void showDialog(final String url) {
new ActionSheetDialog(BaseWebViewActivity.this)
.builder()
.setCancelable(true)
.setCanceledOnTouchOutside(true)
.addSheetItem(
"保存到相册",
ActionSheetDialog.SheetItemColor.Blue,
new ActionSheetDialog.OnSheetItemClickListener() {
@Override
public void onClick(int which) {
String fileName = System.currentTimeMillis() + ".jpg";
savePicture(fileName,url);
}
}).show();
}

//Glide保存图片
public void savePicture(final String fileName, String url){
Glide.with(BaseWebViewActivity.this).load(url).asBitmap().toBytes().into(new SimpleTarget<byte[]>() {
@Override
public void onResourceReady(byte[] bytes, GlideAnimation<? super byte[]> glideAnimation) {
try {
savaFileToSD(fileName,bytes);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
//往SD卡写入文件的方法
public void savaFileToSD(String filename, byte[] bytes) throws Exception {
//如果手机已插入sd卡,且app具有读写sd卡的权限
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String filePath = Environment.getExternalStorageDirectory().getCanonicalPath()+"/Test";
File dir1 = new File(filePath);
if (!dir1.exists()){
dir1.mkdirs();
}
String filename1 = filePath+ "/" + filename;
//这里就不要用openFileOutput了,那个是往手机内存中写数据的
FileOutputStream output = new FileOutputStream(filename1);
output.write(bytes);
//将bytes写入到输出流中
output.close();
//关闭输出流
Toast.makeText(BaseWebViewActivity.this, "图片已成功保存到"+filePath, Toast.LENGTH_SHORT).show();
// 其次把文件插入到系统图库
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(this.getContentResolver(),
filename1, filename, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(new File(filename1))));
} else Toast.makeText(BaseWebViewActivity.this, "SD卡不存在或者不可读写", Toast.LENGTH_SHORT).show();
}

相关文章

  • X5WebView的长按保存图片

    Android基于腾讯的x5WebView的浏览页面,长按保存图片 /*** 响应长按点击事件* @param*/...

  • 朋友圈封面 | 背景图 1.0

    ✎ 收图啦✦ 长按图片即可保存~ 长按图片即可保存图片~ 长按图片即可保存~ - The End- 图文 | 网络...

  • iPhone壁纸:6.20苹果高清壁纸

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • iPhone壁纸:文字锁屏壁纸

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • 壁纸:08-18今日高清唯美壁纸

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • iPhone壁纸:无水印壁纸

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • iPhone壁纸:7.5苹果高清壁纸

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • iPhone壁纸 : 抖音动漫原图

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • iPhone壁纸 : 高清壁纸原图

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

  • iPhone壁纸:全面屏壁纸

    长按保存 点击放大 iPhone手机壁纸(苹果(安卓)壁纸)保存方法:点击图片-长按图片-保存图片,保存完毕返回...

网友评论

    本文标题:X5WebView的长按保存图片

    本文链接:https://www.haomeiwen.com/subject/qsjgwxtx.html