Webビューが正しくロードされていないときにアラートを表示したい。接続が失敗したときにすでにアラートを表示していますが、Webビューがキャッシュからロードされている場合はそのアラートを表示したくありません。解決策は、webviewがキャッシュから正しくロードされたかどうかを知ることかもしれませんが、その方法がわかりません。何か案が?ありがとう!
3 に答える
考えられるすべてのケースで、完全に機能するソリューションを見つけました。これは、キャッシュデータを手動で保存および取得することに基づいています。Webビューをキャッシュしている場合は、保存した場所からロードします。そうでない場合は、インターネット接続を確認し、「カスタム」キャッシュ(アプリのキャッシュディレクトリにあります)に保存します。次に、Webビューが「キャッシュ」されておらず、インターネットに接続されていない場合にのみ、接続アラートを表示します。
これが役立つかどうかはわかりませんが、次のコードを使用して、Webビューでエラーが検出されたときにアラートダイアログを表示します。
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
AlertDialog.Builder localBuilder2 = new AlertDialog.Builder(Webview_Main.this);
localBuilder2.setTitle(R.string.webview_error_received_title);
localBuilder2.setMessage(R.string.webview_error_received);
localBuilder2.setIcon(R.drawable.ic_launcher);
localBuilder2.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface paramDialogInterface,
int paramInt) {
finish();
}
});
localBuilder2.show();
};
ついにハックを見つけましたが、それが最善の方法ではないと確信しているので、もっと可能な解決策を受け取りたいと思います。「onScaleChanged」イベントを使用して、Webビューが画像をロードしたかどうかを判断しています(私の場合は、画像のみをロードします)。このイベントは、インターネットまたはキャッシュから画像をロードするときに発生するため、特別なスケール値で発生した場合は、画像がロードされていないことを意味します。場合によっては、画像のサイズと比率によっては、これらの値は正しく読み込まれたかどうかを示しませんが、ほとんどの場合はそうなります(画像の比率を選択すると、常に正しく機能します)。