从webview捕获的图像未在android中完全加载

从webview捕获的图像未在android中完全加载,android,webview,bitmap,Android,Webview,Bitmap,我有一个WebView,里面有一堆带有标题和日期的图片 但是,捕获webview后,结果图像未完全加载 我的代码在4.3中工作,但在4.4及以上版本中不工作 我怎样才能解决这个问题 要生成位图并保存到SD卡,请执行以下操作: myWebView.getHeight(); Picture p = myWebView.capturePicture(); myWebView.setDrawingCacheEnabled(true); new bitmap(p).execute(); 异步类: cl

我有一个
WebView
,里面有一堆带有标题和日期的图片

但是,捕获webview后,结果图像未完全加载

我的代码在4.3中工作,但在4.4及以上版本中不工作

我怎样才能解决这个问题

要生成位图并保存到SD卡,请执行以下操作:

myWebView.getHeight();
Picture p = myWebView.capturePicture();
myWebView.setDrawingCacheEnabled(true); 
new bitmap(p).execute();
异步类:

class bitmap extends AsyncTask<URL, Void, Bitmap> {
    Picture pict;
    ProgressDialog progressDialog = null;
    public bitmap(Picture pict){
        this.pict=pict;
    }

    protected void onPreExecute() {
    }
    @Override
    protected Bitmap doInBackground(URL... arg0) {
        PictureDrawable pictureDrawable = new PictureDrawable(pict);

        Bitmap bitmap = null;
        bitmap = Bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(), Config.ARGB_8888);

        myWebView.buildDrawingCache();
        Canvas canvas = new Canvas(bitmap);

        Paint paint = new Paint();
        int iHeight = bitmap.getHeight();
        canvas.drawBitmap(bitmap, 0, iHeight, paint);
        myWebView.draw(canvas);

        return bitmap;
    }

    @SuppressLint("NewApi")
    protected void onPostExecute(Bitmap result) {
        myWebView.setDrawingCacheEnabled(false);
        if (result == null) {
            Toast.makeText(MainActivity.this,"Bitmap Null", Toast.LENGTH_LONG).show();
        }
        else {
            String root = Environment.getExternalStorageDirectory().toString();
            File myDir = new File(root + "/Sample");
            myDir.mkdirs();

            String fname = "sampleimage"+".jpg";
            File file = new File(myDir, fname);
            if (file.exists())
            file.delete();
            try {
                FileOutputStream out = new FileOutputStream(file);
                result.compress(Bitmap.CompressFormat.JPEG, 90, out);
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
类位图扩展异步任务{
图片图片;
ProgressDialog=null;
公共位图(图片pict){
this.pict=pict;
}
受保护的void onPreExecute(){
}
@凌驾
受保护位图doInBackground(URL…arg0){
Picturedravable Picturedravable=新的Picturedravable(pict);
位图=空;
bitmap=bitmap.createBitmap(pictureDrawable.getIntrinsicWidth(),pictureDrawable.getIntrinsicHeight(),Config.ARGB_8888);
myWebView.buildDrawingCache();
画布=新画布(位图);
油漆=新油漆();
int iHeight=bitmap.getHeight();
drawBitmap(位图,0,iHeight,paint);
myWebView.draw(画布);
返回位图;
}
@SuppressLint(“新API”)
受保护的void onPostExecute(位图结果){
myWebView.setDrawingCacheEnabled(false);
如果(结果==null){
Toast.makeText(MainActivity.this,“位图空”,Toast.LENGTH_LONG.show();
}
否则{
String root=Environment.getExternalStorageDirectory().toString();
File myDir=新文件(root+“/Sample”);
myDir.mkdirs();
字符串fname=“sampleimage”+“.jpg”;
File File=新文件(myDir,fname);
if(file.exists())
delete();
试一试{
FileOutputStream out=新的FileOutputStream(文件);
结果.压缩(Bitmap.CompressFormat.JPEG,90,out);
out.flush();
out.close();
}捕获(例外e){
e、 printStackTrace();
}
}
}
}
以及webview数据的代码:

WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

String samplehtml="<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes' /><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> </head>   <body ><img alt='Embedded Image'  style='min-height:30%;width:100%;height:23%;border-radius: 0px;margin-bottom:5%;' src='file:///android_asset/images.jpg'/></div></div><br><br><br><br>";

for(int i=0;i<55;i++) {
    samplehtml+="<img alt='Embedded Image'  style='min-height:30%;width:100%;height:23%;border-radius: 0px;margin-bottom:5%;' src='file:///android_asset/images.jpg'/><p style='color:black;width:100%;float:right;'>Sample text</p><br><br></div><p id='dateleft' style='margin-top:3%;'>sample date</p></div><br><br><br><br></body></html>";
}

myWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);

        myWebView.getHeight();
        Picture p = myWebView.capturePicture();
        myWebView.setDrawingCacheEnabled(true); 
        new bitmap(p).execute();
    }

    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(MainActivity.this, description, Toast.LENGTH_SHORT).show();
    }
});
myWebView.loadDataWithBaseURL(null, samplehtml, null, "utf-8",null);
WebSettings-WebSettings=myWebView.getSettings();
setJavaScriptEnabled(true);
字符串samplehtml=“



”; 对于(int i=0;i