Je pense que c'est un moyen courant d'utiliser shouldOverrideUrlLoading
pour détecter le chargement d'URL dans Android WebView, mais pour des pages comme SPA (application à page unique) où la soumission ne s'exécute pas, cette méthode détecte les événements. Je ne peux pas.
Utilisez doUpdateVisitedHistory
de WebViewClient.
doUpdateVisitedHistory est une base de données de liens visités La méthode à mettre à jour.
mWebView.setWebViewClient( new WebViewClient(){
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Log.d(TAG, "shouldOverrideUrlLoading LOLLIPOP url = " + request.getUrl().toString());
return false;
}
@SuppressWarnings("deprecation")
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d(TAG, "shouldOverrideUrlLoading url = " + url);
return false;
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
Log.d(TAG, "doUpdateVisitedHistory url = " + url);
}
});
Maintenant, accédons au SPA à partir de WebView.
06-29 10:10:50.756 13453-13453/jp.sample D/WebViewFragment: doUpdateVisitedHistory url = https://xxxx/profile/home
06-29 10:34:41.636 13453-13453/jp.sample D/WebViewFragment: doUpdateVisitedHistory url = https://xxxx/connect
06-29 10:34:41.658 13453-13453/jp.sample D/WebViewFragment: doUpdateVisitedHistory url = https://xxxx/logout
06-29 10:34:41.671 13453-13453/jp.sample D/WebViewFragment: doUpdateVisitedHistory url = https://xxxx/connect
06-29 10:34:44.131 13453-13453/jp.sample D/WebViewFragment: doUpdateVisitedHistory url = https://xxxx/signin
06-29 10:34:54.526 13453-13453/jp.sample D/WebViewFragment: doUpdateVisitedHistory url = https://xxxx/auth/callback?token=xxxx
J'ai pu le détecter en toute sécurité!
Recommended Posts