2

私はこれについて多くのグーグルを行ってきましたが、答えは見つかりませんでした。他のコントロールを含む全体的なレイアウトの一部として Web ビューがあります。Web ビューを使用して、書式設定されたテキスト (太字とイタリック体のレシピの説明) と URL を表示します。URL は Youtube を指し、完全修飾されています (例: http://www.youtube.com/watch?v=fyzyhuVgzRE )。Web ビューでリンクをクリックすると、Web ビュー コントロール自体がレイアウトから消え (ページ上の残りのコントロールはそのまま残ります)、既定の Web ブラウザーが起動しません

Web ビューの可視性を GONE に設定したかのように動作しますが、レイアウト上のコントロールの可視性は操作しません。

LogCat 出力の 1 つの興味深い手がかりは、OS からの INFO レベル メッセージです。

MotionRecognitionManager  .unregisterListener : / listener count = 0->0,
listener=android.webkit.ZoomManager$1@41ac2fc0

この動作の原因は何ですか?

編集

アクティビティの onCreate() メソッドで webview をセットアップする方法は次のとおりです。

webView1 = (WebView)findViewById(R.id.webView1);
webView1.getSettings().setJavaScriptEnabled(true);
webView1.getSettings().setAllowFileAccess(true);
webView1.setWebViewClient(new MyWebViewClient());

そして MyWebViewClient クラス:

private class MyWebViewClient extends WebViewClient {
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && url.startsWith("http://")) {
            view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
}

奇妙なことに、shouldOverrideUrlLoadingが呼び出されることはありません。

4

2 に答える 2

1

まあ、私はドープです。アンカーのhref属性の二重引用符が2倍になっていることがわかりました。私のシステムはWeb経由でMySQLdbと統合されており、MySQL/PHPとAndroid/SQLiteの間でデータの変換をたくさん行う必要があります。これらの変換の1つで、hrefの引用符をダブルエスケープしました。では、どうあるべきか:

<a href="http://some_web_site">Link Text</a>

代わりに次のようにレンダリングされました:

<a href=""http://some_web_site"">Link Text</a>

Webビューでは、結果のURLは正常に見えました。適切に強調され、他のURLと同じように見えました。引用符を単純に2倍にすると、動作が発生するのは奇妙です。Androidにこのような既知のバグがあるかどうかを確認します。少なくとも、WebViewは、単に画面から消えるのではなく、ある種の例外を通過する必要があります。

于 2013-01-17T21:18:14.527 に答える
0

webview が処理できないコンテンツを読み込もうとすると、この種の動作に直面しました。WebViewClient を使用して参照のクリックを傍受し、外部アプリケーションでこの参照を開くインテントを送信します。このスレッドをチェックしてください。

于 2013-01-17T20:02:15.703 に答える