WebView 링크 클릭 기본 브라우저 열기 내에 유지됩니다.

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



답변

나는 오늘 똑같은 일을해야했고 다른 누군가가 그것을 필요로 할 경우 여기에서 공유하고 싶은 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;
        }
    }
});

답변

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;
    }
  }
});

답변

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

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

답변

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

yourWebViewName.setWebViewClient(new WebViewClient());

확인 공식 문서에 대한.


답변

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

Uri uriUrl = Uri.parse("http://www.google.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);