8

次のコードは、android 2.x を実行しているすべてのデバイスで正常に機能しますが、4.1.2 を搭載した Nexus 7 タブレットでは機能しません。

問題は、shouldOverrideUrlLoading が実行されないことです。onPageFinished は正常に実行されます

利用可能なヘルプに感謝します。

wv = (WebView) root_view.findViewById(R.id.wv);
wv.setBackgroundColor(res.getColor(R.color.def_bgr_color));
wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
wv.setWebViewClient(new MyWebViewClient() );

WebSettings web_settings = wv.getSettings();
web_settings.setJavaScriptEnabled(true);
web_settings.setLoadWithOverviewMode(true);
web_settings.setUseWideViewPort(false);
web_settings.setPluginsEnabled(true);
web_settings.setSupportZoom(true);
web_settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

public class MyWebViewClient extends WebViewClient {
    public MyWebViewClient() {
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.i(TAG, "RUN shouldOverrideUrlLoading" );
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Log.i(TAG, "RUN onPageFinished" );
    }
}


String html_str = ... something html ...

wv.loadDataWithBaseURL("file:///android_asset/", html_str, "text/html", "utf-8", null);
4

1 に答える 1

0

通常のデスクトップ chrome ブラウザで html_str を html ファイルとして読み込んでみましたか? 試してみないと、どこかにつながるかもしれません。

以前のバージョンの Android ではクロス ドメイン スクリプティングが許可されていましたが、最新バージョンの Android ではセキュリティ上の理由から、Webkit ベースの WebView によってクロス ドメイン スクリプティングが禁止されています。これにより、ページの読み込みが妨げられている可能性があります [ここで大げさな推測をしています!]。

于 2013-01-24T06:26:49.577 に答える