2016-09-01 2 views
1

Android에서 간단한 어린이 안전 브라우저를 만들고 싶습니다.이 API로로드하기 전에 모든 URL을 확인하고 싶습니다. https://www.mywot.com/wiki/API. 하지만 때로 URL을 클릭하면이 링크를로드하는 무한 루프가 시작됩니다. 나는이 같은 shouldOverrideUrlLoading 무시하려고 :보기Android WebView - 클릭 후 무한 루프

private class BrowserWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      loadUrl(url); 
      return true; 
     } 
    } 
} 

    private interface UrlCheckListener { 
     void urlChecked(boolean isGood); 
    } 

    private void loadUrl(String query) { 
      String safeUrl = UrlCheckerUtils.getSafeUrlFromQuery(query); 
      checkUrlBeforeLoad(safeUrl, valid -> { 
       if (isViewAttached()) { 
        if (valid) { 
         getView().loadPageByUrl(safeUrl); 
        } else { 
         getView().showError(); 
        } 
       } 
      }); 
     } 

     private void checkUrlBeforeLoad(String url, UrlCheckListener listener) { 
      try { 
       URI uri = new URI(url); 
       String domain = uri.getHost() + "/"; 

       wotService.getLinkReputation(domain) 
         .subscribeOn(Schedulers.io()) 
         .observeOn(AndroidSchedulers.mainThread()) 
         .subscribe(wotResponse -> listener.urlChecked(wotResponse.isSafe())); 
      } catch (URISyntaxException e) { 
       Timber.e(e, "Error while parsing url"); 
     } 
    } 

loadPageByUrl :

@Override 
public void loadPageByUrl(String url) { 
    webView.loadUrl(url); 
} 

당신이 날이 제발 해결하는 데 도움이 수 있습니까?

+3

에서'loadPageByUrl'를 호출하면'loadPageByUrl'을 호출합니다. – Danh

+0

@ Danh 어떻게 해결할 수 있습니까? – shmakova

+0

Android에 익숙하지 않아 정답을 드릴 수 없습니다. 디버거를 사용하거나 튜토리얼을 찾아보십시오. – Danh

답변

0

오류가 String safeUrl = UrlCheckerUtils.getSafeUrlFromQuery(query);에 있는데 여기에서 String의 새 개체를 만들었습니다. shouldOverrideUrlLoadingurl으로 조작을 시작하면 무한 리디렉션없이 작업을 시작합니다.