2012-03-08 6 views
0

ICSで動作するようにHoneycombアプリケーションを調整しました。ウェブビュー内の広告は表示されなくなりました。私はこのセクションにコードを変更しませんでした。 ICS互換コードは、HoneyCombデバイス上の広告を表示しますが、ICSデバイス上の広告は表示しません。何が違うのですか?どのように扱いますか?ここでHoneyComb Webviewで表示される広告(ICS Webviewではなく)

は、私がICSデバイスではなく、ハニカム以下に受信ログは、次のとおりです。

03-08 14:50:42.485: W/webview(24262): java.lang.Throwable: Warning: A WebView method was called on thread 'Thread-617'. All WebView methods must be called on the UI thread. Future versions of WebView may not support use on other threads. 
03-08 14:50:42.485: W/webview(24262): at android.webkit.WebView.checkThread(WebView.java:9468) 
03-08 14:50:42.485: W/webview(24262): at android.webkit.WebView.getSettings(WebView.java:4143) 
03-08 14:50:42.485: W/webview(24262): at com.accuweather.android.tablet.ads.AdView$2.run(AdView.java:160) 
03-08 14:50:42.495: W/System.err(24262): java.io.IOException: java.net.URISyntaxException: Invalid % sequence: %wl in query at index 138: http://www.accuweather.com/adrequest/adrequest.asmx/getAdCode?strAppID=lenovo&strPartnerCode=lenovo&strIpAddress=fe80::42fc:89ff:fe93:9fcb%wlan0&strUserAgent=Mozilla%2F5.0+%28Linux%3B+U%3B+Android+4.0.3%3B+en-us%3B+Xoom+Build%2FIML77%29+AppleWebKit%2F534.30+%28KHTML%2C+like+Gecko%29+Version%2F4.0+Safari%2F534.30&strCurrentZipCode=cityId=335315&strWeatherIcon=12&strUUID=99000052310400 
03-08 14:50:42.495: W/System.err(24262): at libcore.net.http.HttpEngine.<init>(HttpEngine.java:194) 
03-08 14:50:42.495: W/System.err(24262): at libcore.net.http.HttpURLConnectionImpl.newHttpEngine(HttpURLConnectionImpl.java:256) 
03-08 14:50:42.495: W/System.err(24262): at libcore.net.http.HttpURLConnectionImpl.initHttpEngine(HttpURLConnectionImpl.java:243) 
03-08 14:50:42.495: W/System.err(24262): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:78) 
03-08 14:50:42.495: W/System.err(24262): at com.accuweather.android.tablet.ads.AdView$AdRequest.getInputStreamFromURL(AdView.java:345) 
03-08 14:50:42.495: W/System.err(24262): at com.accuweather.android.tablet.ads.AdView$AdRequest.makeRequest(AdView.java:293) 
03-08 14:50:42.495: W/System.err(24262): at com.accuweather.android.tablet.ads.AdView$2.run(AdView.java:159) 
03-08 14:50:42.495: W/System.err(24262): Caused by: java.net.URISyntaxException: Invalid % sequence: %wl in query at index 138: http://www.accuweather.com/adrequest/adrequest.asmx/getAdCode?strAppID=lenovo&strPartnerCode=lenovo&strIpAddress=fe80::42fc:89ff:fe93:9fcb%wlan0&strUserAgent=Mozilla%2F5.0+%28Linux%3B+U%3B+Android+4.0.3%3B+en-us%3B+Xoom+Build%2FIML77%29+AppleWebKit%2F534.30+%28KHTML%2C+like+Gecko%29+Version%2F4.0+Safari%2F534.30&strCurrentZipCode=cityId=335315&strWeatherIcon=12&strUUID=99000052310400 
03-08 14:50:42.495: W/System.err(24262): at libcore.net.UriCodec.validate(UriCodec.java:58) 
03-08 14:50:42.495: W/System.err(24262): at java.net.URI.parseURI(URI.java:406) 
03-08 14:50:42.495: W/System.err(24262): at java.net.URI.<init>(URI.java:204) 
03-08 14:50:42.495: W/System.err(24262): at java.net.URL.toURILenient(URL.java:510) 
03-08 14:50:42.495: W/System.err(24262): at libcore.net.http.HttpEngine.<init>(HttpEngine.java:192) 
03-08 14:50:42.495: W/System.err(24262): ... 6 more 

答えて

3

ICSのWebViewの実装がそのように私たちの多くは、事前にICSおよびICS WebViewの行動に問題がある、刷新されました。

2つの問題があるようです。

まず、HTMLエスケープで特別な意味を持つ "%"を渡すことができないように、クエリをエンコードします。それはstrIpAddressパラメータで起きているようです。あなたはこのようなコードを使用することができます:

String encodedIPAddress = URLEncoder.encode(strIpAddressValue); 

は、私はその後、String.Formatのか、単なる文字列+を使用して、最終的なURL文字列にすべて一緒にそれらを入れて、各パラメータの値を符号化するでしょう。このようにして、将来の同様の問題を避けることができます。

第2に、AndroidはあなたがUIスレッドからWebViewを呼び出さないと訴えています。 Runnableを実行可能に(私の場合は

activity.runOnUiThread(new Runnable() { 
    public void run() { 
     webView.showAd(); 
    } 
}); 
0

、私はActivity.runOnUiThread内の行を次のようしていた:私はあなたがそうのようrunInUiThreadに呼び出しているメソッドは(私はあなたが()をshowAdそれを呼び出していると仮定しています)ラップでしょう)。

webView.setWebChromeClient(WebChromeClient webChromeClient); 

進歩度計を示した。

私はその行をコメントアウト

は、アプリケーションが

あなたが言及したエラーを示す停止しました。

関連する問題