2017-03-06 19 views
6

WebViewオブジェクトにロードしているページのリンクを無効にしたいとします。私のコードはapi 25で私のエミュレータでは完全に動作しますが、私の電話では23 apiで動作しません。私は私のWebViewClientを設定していますWebViewリンクを無効にするとエミュレータでは動作しますが、デバイス上には動作しません

public class NoLinksWebViewClient extends WebViewClient { 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     return true; 
    } 
} 

型NoLinksWebViewClientの対象となる:

この

はブロック私のWebViewのリンクはコードです。それは私の本当の電話ではなく、エミュレータでのトリックを行います。

これを解決するにはどうすればよいですか?

答えて

-2

javafx.scene.Node.setDisable(boolean arg0)はオプションですか?あなたは

Documentation

9

私のコードは、23 APIを使用して自分の携帯電話に、API 25で私のエミュレータ上で完璧に動作しますが、いないを使用しているから要素をブロックすることができますこの方法。

私は重要な違いは、エミュレータとデバイスではなく、APIレベルが異なると思います。

// since API 24 
boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) 
// before API 24, now deprecated 
boolean shouldOverrideUrlLoading(WebView view, String url) 

あなただけの新しいメソッドをオーバーライドしてきたように、あなたの古いデバイスのデフォルトのロジックの作品に:あなたはWebViewClientのドキュメントを見れば は、次の2つの似ているが異なる方法があることに気づくでしょう。これは明らかにAPI 23デバイスがAPI 24でメソッドが別のものに置き換えられていることを知ることができないため、古い(現在は非推奨の)メソッドを呼び出すためです。

私はこの問題を解決するには、これらの両方の方法をオーバーライドする必要があると確信しています。

3

短い答えは、あなたがオーバーライドする必要があり、両方のbelow.The shouldOverrideUrlLoading与えられた方法(WebViewのビューを、文字列のURL)方法は、API 24で廃止され、shouldOverrideUrlLoading(WebViewのビュー、WebResourceRequestリクエスト)方法がありますAPI24で追加されました。

これらの機能が役立ちます。

関連する問題