Как отладить УСТРОЙСТВО, ЗАВИСИМОЕ от аномалии WebView и / или WebViewClient? - PullRequest
0 голосов
/ 06 декабря 2011

В одном из моих классов я вызываю WebView.postUrl () :

getWebView().postUrl(url, EncodingUtils.getBytes(postData, "BASE64"));

, который отлично работает на LG Optimus S, но почему-то не работает на HTC Nexus One.

Под «работами» я подразумеваю, что целевой сайт отвечает на запрос postUrl () с ожидаемыми результатами и характеризуется всегда:

  1. генерация двух WebViewClient.onPageStarted() вызовов,
  2. , за которыми следуют WebView.loadUrl() и
  3. , за которым следует WebViewClient.onPageFinished()

Однако у виновника Nexus One генерируется только первый WebViewClient.onPageStarted() вызов, за которым не следует ни один другой вызов.

Очевидно, что WebView и / или WebViewClient ведут себя по-разному на разных устройствах, потому что оба устройства работают с одинаковым точным кодом приложения .

(или это веб-сайт, который по-разному реагирует на разные устройства, которые используют один и тот же шлюз WiFi?)

На обоих устройствах используется один и тот же точный код приложения, но версии Android немного отличаются: LG работает под управлением 2.3.3, а N1 работает под управлением 2.2.1.

Любая идея или советы о том, как подойти к отладке этой сложной проблемы?

Например, есть ли какие-нибудь крючки, которые я могу разместить где-нибудь, чтобы отследить, что на самом деле происходит под крышкой?

1 Ответ

2 голосов
/ 06 декабря 2011

Переопределите onReceivedSslError и onReceivedError вашего WebViewClient.Я предполагаю, что это проблема с 2.2, которая не доверяет определенным центрам сертификации, или ошибка, которая вызывает проблемы с подстановочными доменами в сертификатах SSL - обе эти конкретные ошибки будут обнаружены в onReceivedSslError.

Если любой из этих методов получаетвызвана, страница может не завершить загрузку.

Если нет никаких ошибок, ваш сервер может делать что-то другое из-за User-Agent устройства - который вам, возможно, придется установить вручную.

...