1

アクティビティの作成時に、ロード ハンドラーを起動しています (スピナーが表示されている間)。特に、そのハンドラー コードでは、3 つのプライベート WebView オブジェクトで loadURL を呼び出します。

これの目的は、これらの Web ページを事前にキャッシュし、それぞれがボタンのタッチ イベントに応じて表示されるようにすることです。実際の読み込みと表示は正常に機能していますが、(まだパターンが表示されない) 私 (またはテスター) が理由もなくブラウザー選択画面 (Chrome / Firefox など) を表示することがあります。

私の最初の質問は、何が原因で、それを防ぐにはどうすればよいかということです。

それ以外の場合は、次のことをどのように実行しますか。

  1. 3 つの Web ページ (画像のない単純な HTML、表など) の結果を事前にキャッシュします。
  2. ボタンのタッチに応じて、画面上のレイアウトに Web ページの結果が表示されます (毎回同じレイアウトなので、ボタン 2 がタッチされると、対応する Web ページが前のページに置き換わります)。
4

3 に答える 3

1

自分の質問に答えるのは好きではありませんが、唯一の答えは質問に関連していませんでした。

問題はリダイレクトによって引き起こされたようです。ロードされている Web ページには実際にはリダイレクトがありませんでしたが、サーバーはサブドメインからの内部リダイレクトを実行していました。次のコードで問題を回避しました。

this.wvBasic.setWebViewClient(new WebViewClient() {
    private String pendingUrl;

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        if (pendingUrl == null) {
            pendingUrl = url;
        }
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        if (!url.equals(pendingUrl)) {
            Log.d(TAG, "Detected HTTP redirect " + pendingUrl + "->" + url);
            pendingUrl = null;
        }
    }
});
this.wvBasic.getSettings().setJavaScriptEnabled(false);
于 2012-09-02T11:41:15.667 に答える
0

これは完全に正常な動作です。を作成すると、オペレーティング システムはそれを処理するintentための適切なアクティビティを探しています。あなたの意図を処理できるアプリケーションは他にもあるため (あなたの場合はより多くのブラウザー)、オペレーティング システムはこれらのアクティビティから選択する可能性を提供します。intent-filterstartActivity(intent)

今、このスレッドを確認しましたが、あなたが探している情報のようです。ドキュメントによると、できますretrieve a set of activities that should be presented to the user as similar optionsアプリが組み込みのブラウザー(すべてのデバイスにインストールされることが保証されています) を使用するように、これらのアクティビティをフィルター処理できる場合は、問題ありません。

于 2012-07-30T16:55:34.787 に答える
0

簡単な解決策は次のとおりです。

// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient());

ソース: https://developer.chrome.com/multidevice/webview/gettingstarted

于 2018-11-27T13:00:54.010 に答える