2016-11-30 4 views
0

私はshouldOverrideUrlLoadingメソッド(廃止予定と最新版の両方)を実装しているWebViewを持っているハイブリッドアプリケーションを持っています。これは、私のドメイン内の外部リンクや特定のリンクをロードする前に制御を引き継ぐべきです。詳細に入るがなければ、コードは次のようroughtlyになります同じドメイン内のリンクに対してshouldOverrideUrlLoadingが呼び出されていますか?

private WebView mWebView; 

mWebView.setWebViewClient(new myWebViewClient() { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if(url.isExternal() || url.contains("#specialCase")) { 
      // Do actions 
      return true; 
     } 
     return super.shouldOverrideUrlLoading(view, url); 
    } 
}); 

私は、すべての外部リンクがリンクが自分のドメイン内にあるので、方法がないときしかしshouldOverrideUrlLoadingが全く呼び出されていない、正常に動作していることに気づきました私が制御権を引き継ぐことを望んでいるケースを検出することができます。

アンドロイドドキュメント状態

ホストアプリケーションに新しい URLが現在のWebViewにロードされようとしているときに制御を引き継ぐためにチャンスを与えます。

この新しい新しいドメインですか?行方不明または間違っていることはありますか?ユーザーを検出する方法に関するアイデアは、同じドメインを指しているリンクをクリックしていますか?

ありがとうございます。

+0

多分if(url.startsWith( "domain.com/"))を使用して、あなたの欲望の仕事をすることができます –

+0

問題は、URLが私のドメイン内にあればshouldOverrideUrlLoadingは決して呼ばれません何かをチェックしてください。既存のものと –

+0

使用このクライアント:webView.setWebChromeClient(新しいWebChromeClient(){onProgressChanged @Override公共ボイド(WebViewのビュー、INT newProgress){ super.onProgressChanged(ビュー、newProgress);} })。 –

答えて

0

最後に、shouldOverrideUrlLoadingが一度も呼び出されなかった理由が見つかりました。

明らかに、実際の読み込みが開始される直前に呼び出されます。私たちのWebアプリケーションはシングルページアプリケーションなので、URLが変わっても新しいページはロードされず、shouldOverrideUrlLoadingは呼び出されません。

関連する問題