4

複数のクライアント用にパーソナライズされたアプリにメソッドshouldOverrideUrlLoadingを使用しています。各クライアントには、Webビューにロードする独自のWebページがあります。私の問題はこれです:アプリはクライアントAと彼のWebページには完璧に機能しますが、クライアントのB Webページ(クライアントAとはまったく関係ありません)には機能しません。私がテストした違いは、ロードされたコンテンツ内でWebビューにアクセスされるリンクのクライアントのB状況では、shoulOverrideUrlLoadingが機能せず(呼び出されることはありません)、クライアントのAWebページは完全に機能することです。もう1つのことは、クライアントのB Webページは、2.1や2.3.6などの一部のAndroidバージョンでのみ機能するわけではありませんが、2.3.3、2.3.5、4.0.2、または4.0.3では正常に機能します。

ですから、これはちょっと奇妙です。何か知っていることがあれば、助けてください!ありがとう!:)

編集:ウェブページがjavascriptを介して要求されたリンクをロードしない場合、shouldOverrideLoadingが呼び出されず、javascriptが使用されていない場合に機能することに気付きました!!! しかし、webview.setJavaScriptEnabled(false)を設定すると、機能します!!! アプリでJavaScriptを有効にする必要があります。これは、ウェブページが通常、読み込み以外の目的でJavaScriptを使用しているため、shouldOverrideUrlLoadingが呼び出されないという理由だけで無効にできないためです。

編集2:より正確には:

これは機能し、shouldOverrideUrlLoadingが呼び出されます。

<p onclick="location.href='linkHere'">
        NewLink
        <span class="icon-arrow"></span>
</p>

これは機能せず、shouldOverrideUrlLoadingは呼び出されません。

<a class="link-inherit" href="linkHere">
        NewLink
        <span class="icon-arrow"></span>
</a>
4

1 に答える 1

3

shouldOverrideUrlLoading呼び出されない場合の解決策

public void onPageStarted(WebView view, String url, Bitmap favicon) {

        if (url.contains("success")) {
            Intent intent = new Intent(WebviewActivity.this, OrderConfirmActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        } else {
            super.onPageStarted(view, url, favicon);
        }
    }
于 2013-07-05T06:13:05.260 に答える