2012-12-07 3 views
9

사용자 정의 링크 (예 : // action)가있는 페이지를로드하는 WebView가 있습니다. 매니페스트 파일에 URL 스키마를 등록하고 링크를 클릭하면 내 활동의 onResume() 메소드가 올바른 데이터와 함께 호출되며 정상적으로 작동합니다.WebView (안드로이드)에서 URL로드를 차단하는 방법은 무엇입니까?

내 문제는 WebView가 여전히 링크를로드하려고 시도하고 WebView가 "웹 페이지를 사용할 수 없음"이라는 메시지를 표시하는 것입니다. 나는 그것을 원하지 않는다.

WebView가 URL을로드하지 못하게하려면 어떻게해야합니까?

WebView banner = ... 
banner.setWebViewClient(new WebViewClient() { 

    @Override 
    public void onLoadResource(WebView view, String url) { 

     if (url.startsWith("app://")) { 

      Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url), getContext(), Main.class); 
      //startActivity(i); 
     } 
    } 
} 

banner.loadUrl("url_to_the_banner"); 

답변

22

사용 WebViewClient.shouldOverrideUrlLoading 대신 :

여기 내 코드입니다.

WebViewClient Reference

업데이트

public boolean shouldOverrideUrlLoading(WebView view, String url){ // handle by yourself return true; } 

:
방법 shouldOverrideUrlLoading(WebView, String)는 API 레벨 24을 사용 shouldOverrideUrlLoading(WebView, WebResourceRequest) 대신에 사용되지 않습니다.

+0

저주를! 나는 방금 심판에서 그것을 놓쳤다! 고마워요! – Alexis

6

그러나 그렇게, 그렇지 않은 경우는 false 반환해야합니다 :

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url){ 
    if(url.startsWith(myString){ 
     // handle by yourself 
     return true; 
    } 
    // ... 
    return false; 
} 
관련 문제