Carreguei um URL externo no meu WebView
. Agora, o que eu preciso é que, quando o usuário clicar nos links da página carregada, ele funcione como um navegador normal e abra o link da mesma forma WebView
. Mas está abrindo o navegador padrão e carregando a página lá?
Eu ativei o JavaScript. Mas ainda não está funcionando. Eu esqueci alguma coisa?
WebViewClient
e não precisa de subclassificação se é tudo o que você está fazendo. Eu tenho esse ao trabalho apenas fazendomyWebView.setWebViewClient(new WebViewClient());
em alguns casos, pode ser necessário substituir o onLoadResource se você receber um redirecionamento que não aciona o método de carregamento de URL. Nesse caso, tentei o seguinte:
fonte
A documentação oficial diz que, clique em um link em um WebView para iniciar um aplicativo que lida com URLs. Você precisa substituir esse comportamento padrão
ou se não houver lógica condicional no método, faça isso simplesmente
fonte
Adicione estas 2 linhas no seu código -
fonte
O método
boolean shouldOverrideUrlLoading(WebView view, String url)
foi preterido na API 24. Se você estiver suportando novos dispositivos, deverá usarboolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
.Você pode usar os dois fazendo algo assim:
fonte
A resposta de Arulx Z foi exatamente o que eu estava procurando.
Estou escrevendo um aplicativo com o Navigation Drawer com recyclerview e webviews, para manter a navegação na web dentro do aplicativo, independentemente dos hiperlinks clicados (portanto, não iniciando o navegador externo). Para isso, basta colocar as 2 linhas de código a seguir:
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
exatamente na sua declaração do WebView.
Aqui está um exemplo do meu código implementado no WebView:
Dessa forma, todos os links clicados no site serão carregados no seu WebView. (Usando o Android Studio 1.2.2 com todos os SDKs atualizados)
fonte