当前位置:  开发笔记 > 编程语言 > 正文

WebView.capturePicture使用url参数失败

如何解决《WebView.capturePicture使用url参数失败》经验,为你挑选了1个好方法。

[Android新手提醒]

我需要在BitMap中捕获WebView的内容,我遇到了一个奇怪的问题.我的方法是使用WebView注册WebViewClient,在onPageFinished中我调用capturePicture.使用简单的URL(例如http://www.yahoo.com),它可以正常工作.在其他情况下,capturePicture返回一个高度和宽度值= 0的图片.无论哪种方式,页面加载都很好.我必须使用的实际网址有相当多的url参数,我最初认为有任何参数是问题,但事实并非如此.这里有一些示例网址,其中包含指示是否有效的注释:

    w.loadUrl(" http://www.yahoo.com "); //是

    w.loadUrl(" http://search.yahoo.com/search?p=android "); //通常不是???

    w.loadUrl(" http://www.yahoo.com?foo=bar "); // 不

    w.loadUrl(" http://www.google.com "); //是的

    w.loadUrl(" http://www.google.com?q=android "); //是的

    w.loadUrl(" http://www.google.com?foo=bar "); //是的

第二种情况特别令人沮丧,因为它似乎不起作用.但是,如果我首先使用#5运行测试应用程序,然后将URL切换到#2并运行它然后工作.

这是我创建的实际简化测试的片段:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    w = new WebView(this);
    w.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView webview, String url) {
            Picture picture = webview.capturePicture();

            Log.d("Height", "" + picture.getHeight());
            Log.d("Width", "" + picture.getWidth());
            Bitmap b = Bitmap.createBitmap(picture.getWidth(), picture
                    .getHeight(), Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            picture.draw(c);
        }
    });

    w.getSettings().setJavaScriptEnabled(true);

    setContentView(w);

    //w.loadUrl("http://www.yahoo.com"); //yes
    w.loadUrl("http://search.yahoo.com/search?p=android"); // usually not???
    //w.loadUrl("http://www.yahoo.com?foo=bar"); // nope
    //w.loadUrl("http://www.google.com"); // yep
    //w.loadUrl("http://www.google.com?q=android"); // yep
    //w.loadUrl("http://www.google.com?foo=bar"); // yes
}

有没有人遇到过这个问题?希望我只是一个白痴,有一个简单的解决方案或解决方法?



1> bhatt4982..:

我刚刚再次访问了文档页面.[here] [1]

"通知主机应用程序页面已完成加载.此方法仅针对主框架调用.当调用onPageFinished()时,渲染图片可能尚未更新.要获取新的通知图片,使用onNewPicture(WebView,图片)."

二手图片监听器,我尝试了你的样品,它的工作原理.
希望这可以帮助.

我刚刚在您的示例中添加了以下代码并删除了WebViewClient

 w.setPictureListener(new PictureListener(){

    public void onNewPicture(WebView view, Picture picture) {
            Log.d(TAG, "onNewPicture- Height"+ picture.getHeight());
            Log.d(TAG, "onNewPicture- Width"+ picture.getWidth());
        }

    });

[1]:http://developer.android.com/reference/android/webkit/WebViewClient.html#onPageFinished(android.webkit.WebView ,java.lang.String)

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有