如何在WebChromeClient中检测网址更改

时间:2018-08-03 07:52:23

标签: c# android xamarin.android

我想在Google身份验证期间在WebView中发生重定向时检测URL更改。问题是Google限制使用WebView进行身份验证,因此我正在使用WebChromeClient。 WebChromeClient没有ShouldOverrideUrlLoading方法。我试图重写OnReceivedTitle方法,但是它无法检测到URL更改。有人可以帮忙吗?

 class CustomWebViewClient : WebChromeClient
    {
       public string Url { get; private set; }

        public override void OnReceivedTitle(WebView view, string title)
        {
            base.OnReceivedTitle(view, title);
            Url = view.Url;
        }        
    }

1 个答案:

答案 0 :(得分:0)

Google限制从webview请求登录oAuth。但是,我的请求是自定义oAuth Provider。我认为并假设您要检测网址,例如:oAuth回调到webview是一个杂乱的案例,只在webview中看到我就这样解决了:

@Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Timber.e("WEBVIEW %s", url);
    if(weHaveReceivedAnOAuthCallback(url)){
      view.setVisibility(View.GONE);
      String reply = retrieveParamaters(url);
      oAuthCallbackListener.onOAuthCallback(reply);
    }
    if (url.startsWith("http") || url.startsWith("https")) {
      return false;
    }else{
      return true;
    }
  }

  private static boolean weHaveReceivedAnOAuthCallback(String url) {
    return url.startsWith(BuildConfig.API_OAUTH_REDIRECT);
  }

  private static String retrieveParamaters(String url) {
    return url.replace(BuildConfig.API_OAUTH_REDIRECT, "");
  };

我希望这对您的问题有所帮助。