3

URL の読み込みがいつ完了したかを検出するための回答を見てきましたが、それを知る必要があります..しかし、読み込みが成功したかどうかも知る必要があります。

HTML インタースティシャル広告をロードしているので、これを知る必要があります。ロードされていない場合は表示したくありません。自分で を作成してWebClientを検出することはできますonPageFinishedが、インターネットのスイッチをオフにしても、 が呼び出されているのが引き続き表示されることに気付きましたonPageFinished。では、両方が完了して成功した場合、URL を検出するにはどうすればよいでしょうか?

編集: ObAt の提案を見て、それをthis SO questionに対する最も人気のある回答と組み合わせて、私はまだ少し行き詰まっています。インターネットをオフにすると、WebView の内容は次のonPageFinishedようになります (section_id 番号が 9999 に変更されます)。

<head><head><script type="text/javascript" src="http://ad.leadboltads.net/show_app_ad.js?section_id=9999"></script></head><body></body></head>

これは明らかなエラーを示しません。

編集:LoadDataではなく aを実行していることに気付きましたLoadUrlが、これが違いを生むかどうかはわかりません。

編集:インターネットがオンで、広告が正常に読み込まれる場合、webview のコンテンツの例は次のとおりです。

<iframe name="ap_iframe" width="300" height="250" frameborder="0" src="http://ad.leadboltads.net/show_app_ad?section_id=9999&amp;lang=en-GB&amp;scr_w=480&amp;scr_h=800&amp;
url=data%3Atext%2Fhtml%2C%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22http%3A%2F%2Fad.leadboltads.net%2Fshow_app_ad.js%3Fsection_id%__HIDDEN__script%253E&amp;
referer=" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true" scrolling="no"></iframe></body></head>

これで、2 つの状態の違いがわかるようになりました...そしておそらく、「iframe」や「width」など、失敗したページにはない、正常に読み込まれたページで期待されるものを検索することができます.. . しかし、それは非常に非一般的で不十分な答えのように感じます.

4

2 に答える 2

2

ダウンロードしたデータに不正なHTTP ステータス エラーが含まれていないかどうかを確認できます(HTTP 200 エラーは、すべてが正常であることを意味します)。ダウンロードしたデータがnullでないかどうかを確認することもできます。

編集: 成功した応答は、失敗した要求よりもはるかに長いため、応答の長さを確認できます。

if(serverRespons.length > 50){
  // do something
}

または、リクエストが成功した場合にのみ取得する属性が含まれている場合は、レスポンスを検索できます

String myCheck = "width="
if(serverRespons.toLowerCase().contains(myCheck.toLowerCase()){
  //do something
}

私は自分でコードをテストしませんでしたが、うまくいくことを願っています!

注:私は2番目の方法、または組み合わせを好みます:)

于 2012-12-12T17:27:35.340 に答える
-3

おそらく、webchromeclient を設定し、onprogresschanged メソッドをオーバーライドします。

進行状況が 100 になったときに、ロードが完了したかどうかを確認できます。

于 2012-12-12T16:55:20.513 に答える