[Android Newbie alert]
Мне нужно захватить содержимое WebView в BitMap, и я столкнулся со странной проблемой. Мой подход состоит в том, чтобы зарегистрировать WebViewClient в WebView, и в onPageFinished я вызываю capturePicture . С простым URL-адресом (например, http://www.yahoo.com), он работает нормально. В других случаях capturePicture возвращает Picture со значениями высоты и ширины = 0. Страница загружается нормально в любом случае. Фактический URL, который я должен использовать, имеет довольно Несколько параметров URL, и я изначально думал, что проблема заключается в наличии каких-либо параметров, но это не так. Вот несколько примеров URL с комментариями, указывающими, работает ли он или нет:
- w.loadUrl ("http://www.yahoo.com"); // да
- w.loadUrl ("http://search.yahoo.com/search?p=android"); // обычно нет ???
- w.loadUrl ( "http://www.yahoo.com Foo = бар ?"); // Нет
- w.loadUrl ("http://www.google.com"); // yep
- w.loadUrl ( "http://www.google.com д = андроид ?"); // да
- w.loadUrl ( "http://www.google.com Foo = бар ?"); // да
Второй случай особенно расстраивает, поскольку, похоже, он не работает. Однако, если я сначала запускаю тестовое приложение с # 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
}
Кто-нибудь сталкивался с этой проблемой? Надеюсь, я просто идиот, и есть простое решение или обходной путь?