Android保存Webview屏幕截图
我创建了一个按钮来捕获Webview的屏幕截图,并将其保存到DCIM中的一个文件夹中。问题是当我点击按钮时,截图会被捕获并保存在图库中,但当我再次点击时,旧截图会以新名称再次保存 这是我的密码。请帮忙Android保存Webview屏幕截图,android,webview,screenshot,Android,Webview,Screenshot,我创建了一个按钮来捕获Webview的屏幕截图,并将其保存到DCIM中的一个文件夹中。问题是当我点击按钮时,截图会被捕获并保存在图库中,但当我再次点击时,旧截图会以新名称再次保存 这是我的密码。请帮忙 screenshot.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap = takeSc
screenshot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap bitmap = takeScreenshot();
saveBitmap(bitmap);
}
});
public Bitmap takeScreenshot() {
mWebview.setDrawingCacheEnabled(true);
return mWebview.getDrawingCache();
}
public void saveBitmap(Bitmap bitmap) {
Random r = new Random();
long i1 = r.nextInt(9999-9) + 9;
char[] chars = "ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 20; i++) {
char c = chars[random.nextInt(chars.length)];
sb.append(c);
}
File directory = new File(Environment.getExternalStorageDirectory() + "/DCIM/NCERT Stuff/");
if(!directory.exists()) {
directory.mkdirs();
}
File imagePath = new File(Environment.getExternalStorageDirectory() + "/DCIM/NCERT Stuff/NCERT"+i1+sb+".jpeg");
// sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imagePath)));
FileOutputStream fos;
try {
fos = new FileOutputStream(imagePath);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
Log.e("GREC", e.getMessage(), e);
} catch (IOException e) {
Log.e("GREC", e.getMessage(), e);
}
}
screenshot.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
位图位图=截图();
保存位图(位图);
}
});
公共位图截图(){
mWebview.setDrawingCacheEnabled(true);
返回mWebview.getDrawingCache();
}
公共void保存位图(位图){
随机r=新随机();
长i1=r.nextInt(9999-9)+9;
char[]chars=“ABCDEF”.toCharArray();
StringBuilder sb=新的StringBuilder();
随机=新随机();
对于(int i=0;i<20;i++){
字符c=字符[random.nextInt(字符长度)];
sb.附加(c);
}
File directory=新文件(Environment.getExternalStorageDirectory()+“/DCIM/NCERT/”;
如果(!directory.exists()){
mkdirs()目录;
}
File imagePath=新文件(Environment.getExternalStorageDirectory()+”/DCIM/NCERT Stuff/NCERT“+i1+sb+”.jpeg”);
//sendBroadcast(新意图(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u文件,Uri.fromFile(imagePath));
文件输出流;
试一试{
fos=新文件输出流(imagePath);
bitmap.compress(bitmap.CompressFormat.JPEG,100,fos);
fos.flush();
fos.close();
}catch(filenotfounde异常){
Log.e(“GREC”,e.getMessage(),e);
}捕获(IOE异常){
Log.e(“GREC”,e.getMessage(),e);
}
}
根据您的代码,您为每次单击生成随机数,并使用包含随机数的文件名保存,对吗?这就是为什么您会得到多个具有不同名称的图像…您可能需要重新考虑文件名生成代码以解决此问题
您可能希望删除以下代码:
Random r = new Random();
long i1 = r.nextInt(9999-9) + 9;
char[] chars = "ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 20; i++) {
char c = chars[random.nextInt(chars.length)];
sb.append(c);
}
致:
我认为旧位图仍然是您的图形缓存。请尝试链接中的方法
我自己找到了解决办法。让我先解释一下我面临的问题。 当我点击按钮时,屏幕截图被保存,现在假设我滚动浏览webview并再次点击按钮,我的代码会用新名称而不是新的屏幕截图保存旧的屏幕截图 解决方案:
public Bitmap takeScreenshot() {
mWebview.clearfocus(); //Cleares the preivious focus
mWebview.setDrawingCacheEnabled(true);
return mWebview.getDrawingCache();
}
谢谢你的帮助对不起,你搞错了。我想要不同名称的文件。问题是旧的屏幕截图会用新的名称再次保存,我想要新名称的新屏幕截图
File imagePath = new File(Environment.getExternalStorageDirectory() + "/DCIM/NCERT Stuff/myScreenshot.jpeg");
public Bitmap takeScreenshot() {
mWebview.clearfocus(); //Cleares the preivious focus
mWebview.setDrawingCacheEnabled(true);
return mWebview.getDrawingCache();
}