WebView 링크 클릭 기본 브라우저 열기


112

현재 웹뷰를로드하는 앱이 있고 모든 클릭이 앱 내에 유지됩니다. 내가하고 싶은 것은 특정 링크 (예 : http://www.google.com )를 앱 내에서 클릭하면 기본 브라우저가 열립니다. 누구든지 아이디어가 있다면 알려주세요!

답변:


193

나는 오늘 똑같은 일을해야했고 다른 누군가가 그것을 필요로 할 경우 여기에서 공유하고 싶은 StackOverflow에 대한 매우 유용한 답변을 찾았습니다.

소스 ( sven )

webView.setWebViewClient(new WebViewClient(){
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
            view.getContext().startActivity(
                new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        } else {
            return false;
        }
    }
});

3
이 답변은 저에게 많은 도움이되었습니다! 감사!
Android-Droid

7
URL이 상대적인 경우 ( "http : //"로 시작하지 않음) 앱 내에서 열립니다. 이를 방지하려면 항상 true를 반환하고 상대 URL 링크가 아무것도하지 않도록 만드십시오.
Johan S

3
rtsp, https 등과 같은 접두사에서 다른 프로토콜을 확인해야합니다. 링크가 미디어를 열기위한 것이라면 장치의 미디어 플레이어로 리디렉션되어야합니다. 프로토콜 접두사가없는 경우 식별하고 제공하십시오.
Abhinav Saxena 2014

정확히 내가 찾고있는 것. 감사합니다
Sudarshan

2
참고 shouldOverrideUrlLoading(WebView view, String url)API (24)에 사용되지는 확인 이 답변을 .
Mateus Gondim 2017 년

35
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);

이 코드를 포함 할 필요가 없습니다.

// webview.setWebViewClient(new WebViewClient());

대신 아래 d 코드를 사용해야합니다.

webview.setWebViewClient(new WebViewClient()
{
  public boolean shouldOverrideUrlLoading(WebView view, String url)
  {
    String url2="https://whatoplay.com/";
     // all links  with in ur site will be open inside the webview 
     //links that start ur domain example(http://www.example.com/)
    if (url != null && url.startsWith(url2)){
      return false;
    } 
     // all links that points outside the site will be open in a normal android browser
    else
    {
      view.getContext().startActivity(
      new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
      return true;
    }
  }
});

11

이를 위해 Intent를 사용할 수 있습니다.

Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);

11
당신은 Intent.ACTION_VIEW 사용해야합니다
rajh2504

10

다음 줄만 추가하면됩니다.

yourWebViewName.setWebViewClient(new WebViewClient());

확인 공식 문서에 대한.


6

이를 위해 인 텐트를 사용할 수 있습니다.

Uri uriUrl = Uri.parse("http://www.google.com/"); 
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);  
startActivity(launchBrowser);  
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.