198 votes

En cliquant sur les Url s'ouvre le navigateur par défaut

J'ai un problème simple, j'ai chargé une URL externe dans mon WebView. Maintenant ce que j'ai besoin est que lorsque l'utilisateur clique sur les liens sur la page chargée, il doit travailler comme un navigateur et ouvrez le lien dans le même WebView. Mais c'est d'ouvrir le navigateur par défaut et le chargement de la page?

J'ai activé le JavaScript. Mais c'est toujours pas de travail. Ai-je oublié quelque chose?

342voto

Dave Webb Points 90034

Si vous utilisez un WebView vous devrez intercepter les clics de vous-même si vous ne voulez pas la valeur par défaut d'Android comportement.

Vous pouvez suivre les événements en WebView à l'aide d'un WebViewClient. La méthode que vous voulez est - shouldOverrideUrlLoading(). Ceci vous permet de réaliser votre propre action lorsqu'une URL particulière est sélectionnée.

Vous définissez l' WebViewClient de votre WebView à l'aide de l' setWebViewClient() méthode.

Si vous regardez l' WebView de l'échantillon dans le SDK, il y a un exemple qui fait exactement ce que vous voulez. C'est aussi simple que:

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

54voto

realgt Points 1181

dans certains cas, vous pourriez avoir besoin de remplacer onLoadResource si vous obtenez une redirection qui ne déclenche pas l'url de chargement de la méthode. dans ce cas, j'ai essayé le suivant:

@Override
public void onLoadResource(WebView view, String url)
{
    if (url.equals("http://redirectexample.com"))
    {
        //do your own thing here
    }
    else
    {
        super.onLoadResource(view, url);
    }           
}

25voto

abbas Points 483

Selon le responsable de la documentation, cliquez sur un lien dans une WebView, vous lancez une application qui gère les Url. Vous avez besoin de remplacer le comportement par défaut comme ceci

    myWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
    });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: