134

そのため、現在、私のアプリでは、アクセスしている URL にリダイレクトがあり、これが発生すると、WebView はアプリにとどまるのではなく、新しいブラウザーを開きます。ビューが通常のように URL にリダイレクトされるように設定を変更する方法はありますが、新しいブラウザーを開く代わりにアプリにとどまりますか?

編集:

リダイレクト URL が必要ですが、その作成方法がわからないため、その URL にアクセスする唯一の方法は、必要な URL へのリダイレクトを引き起こす URL を使用することです。

例: http://www.amazon.com/gp/aw/s/ref=is_box_/k=9780735622777にアクセスすると、URL が実際の製品にリダイレクトされることに注意してください。私のアプリでは、新しいブラウザーで開くと問題なく動作しますが、WebView を使用してアプリに保持すると、次のように k=9780735622777 の検索を行っているかのように表示されます。http://www.amazon.com/gp/aw/s/ref=is_s_?k=k%3D9780735622777&x=0&y=0 . または、ブラウザーでビューを開き、適切なものを表示します。ただし、すべてをアプリに保持したいです。

4

7 に答える 7

268

WebViewClient を作成し、 shouldOverrideUrlLoadingメソッドをオーバーライドします。

webview.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        // do your handling codes here, which url is the requested url
        // probably you need to open that url rather than redirect:
        view.loadUrl(url);
        return false; // then it is not handled by default action
   }
});
于 2010-11-01T03:34:41.677 に答える
26

公式ドキュメントによると、WebView の任意のリンクをクリックすると、URL を処理するアプリケーションが起動します。これはデフォルトではブラウザです。このようにデフォルトの動作をオーバーライドする必要があります

    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });
于 2013-09-20T16:47:15.763 に答える
21

デフォルトのカスタムを追加するだけで十分WebViewClientです。これにより、WebView は読み込まれた URL 自体を処理します。

mWebView.setWebViewClient(new WebViewClient());
于 2015-11-25T20:18:50.823 に答える
3

webviewclient を実装するクラスを作成し、次のコードを追加して、以下に示すように URL 文字列を検証できるようにします。これらの[例][1]を見ることができます

public class myWebClient extends WebViewClient {

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url); 
         return true;
     }
}

コンストラクターで、以下に示すように webview オブジェクトを作成します。

   web = new WebView(this); web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 

次に、次のコードを追加して、アプリ内で URL の読み込みを実行します

       WebSettings settings=web.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    
    web.loadUrl("http://www.facebook.com");
    web.setWebViewClient(new myWebClient()); 
   
 web.setWebChromeClient(new WebChromeClient() {
      // 
      //
    }
于 2016-07-15T09:11:52.927 に答える