android本地webview OnPageFinished开火晚了

时间:2011-12-21 16:57:37

标签: android webview

我有一个webview,它加载了一个本地的html页面,我需要知道它何时完成加载,所以我使用的函数onPageFinished()会立即被解雇,但出于某种原因,它在网站上工作正常,例如google.co.uk。

public class TestwebviewActivity extends Activity {
/** Called when the activity is first created. */
WebView webview = null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    webview = (WebView) findViewById(R.id.webview);
    Log.d("Webview", "created");
    webview.getSettings().setJavaScriptEnabled(true);

    webview.setWebViewClient(new WebViewClient() 
    { 
        public void onPageFinished(WebView view, String url) 
        { 
            Log.d("Webview", "Finished Loading");

            Picture picture = view.capturePicture(); 
            Bitmap  b = Bitmap.createBitmap( 300, 300, Bitmap.Config.ARGB_8888); 
            Canvas c = new Canvas( b ); 
            picture.draw( c ); 
            FileOutputStream fos = null; 
            try { 
                fos = new FileOutputStream( "/sdcard/google_" + System.currentTimeMillis() + ".jpg" ); 
                if ( fos != null ) 
                { 
                    b.compress(Bitmap.CompressFormat.JPEG, 90, fos ); 
                    fos.close();
                    Log.d("Webview", "Image Created");
                } 
            } catch( Exception e ) 
            { 
            //... 
            } 
        } 
    });   
    webview.loadUrl("file:///android_asset/htmlpage.html");
}

}

自从升级到Android 3.2之后才发生这种情况 - 之前是2.3

任何人遇到相同的问题或任何建议?

谢谢,如果有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用已弃用的PictureListener

    wv.setPictureListener(new PictureListener() {

        @Override
        public void onNewPicture(WebView view, Picture picture) {
            if (i < pageList.size()) {
                wv.loadUrl("javascript: highlightSearchTerms('" + searchKey + "');");   
            } else listener.onFinishSearch();

            i++;
        }
    });