2017-01-01 19 views
0

特定のURLを読み込むアプリ内にWebViewがありますが、アプリを使用すると、Webビュー内で別のURL(wwwなど)に移動/リダイレクトされる可能性があります。 cheese.comは、アプリ内では表示しないでください。 WebViewの中のそのURL(www.cheese.com)を聞くことができますか?読み込みが完了する前に、別のURLに読み込みを開始するのですか?Webview内の特定のURLをリダイレクトする - Android

public class MainActivity extends AppCompatActivity { 

    private WebView mWebView; 

     mWebView.loadUrl("https://example.com"); 

     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

    } 
} 
+0

を、あなたは、URLが(www.cheese.com)で開始した場合、それは別のURLにリダイレクトすることを言おうとしていますか? –

+0

はい、絶対に – user1419810

+0

次に、そのメソッドで 'shouldOverrideUrlLoading(WebView view、String url)'メソッドを使用する必要があります。 –

答えて

0

はこのようなものを使用してください:

webView.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      if (url != null && url.startsWith("http://www.cheese.com")) { 
       //do what you want here 
       return true; 
      } else { 
       return false; 
      } 
     } 
    }); 
1
// Load CustomWebviewClient in webview and override shouldOverrideUrlLoading method 
    mWebView.setWebViewClient(CustomWebViewClient) 



class CustomWebViewClient extends WebViewClient { 

    @SuppressWarnings("deprecation") 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     final Uri uri = Uri.parse(url); 
     return handleUri(uri); 
    } 

    @TargetApi(Build.VERSION_CODES.N) 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     final Uri uri = request.getUrl(); 
     return handleUri(uri); 
    } 

    private boolean handleUri(final Uri uri) { 
     Log.i(TAG, "Uri =" + uri); 
     final String host = uri.getHost(); 
     final String scheme = uri.getScheme(); 
     // Based on some condition you need to determine if you are going to load the url 
     // in your web view itself or in a browser. 
     // You can use `host` or `scheme` or any part of the `uri` to decide. 

     /* here you can check for that condition for www.cheese.com */ 
     if (/* any condition */) { 
      // Returning false means that you are going to load this url in the webView itself 
      return false; 
     } else { 
      // Returning true means that you need to handle what to do with the url 
      // e.g. open web page in a Browser 
      final Intent intent = new Intent(Intent.ACTION_VIEW, uri); 
      startActivity(intent); 
      return true; 
     } 
    } 
} 
関連する問題