我想在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;
}
}
答案 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, "");
};
我希望这对您的问题有所帮助。