Ao testar seu novo aplicativo Android, você vai querer verificar seu WebView. No entanto, pode perceber um erro que impede que uma página do navegador seja exibida dentro do app. Isso pode afetar negativamente a experiência do usuário (UX) do seu aplicativo.

Felizmente, você pode corrigir facilmente o erro ERR_UNKNOWN_URL_SCHEME. No frontend, você pode precisar desativar as extensões Chrome ou simplesmente limpar o cache. Alternativamente, os desenvolvedores podem desabilitar URLs não-padrão na codificação do aplicativo.

Neste artigo, vamos explicar o que é o erro ERR_UNKNOWN_URL_SCHEME e o que o causa. Então, mostraremos como corrigi-lo tanto na frontend quanto no backend. Vamos começar!

Confira nosso guia em vídeo para corrigir o erro ERR_UNKNOWN_URL_SCHEME:

O que é o erro ERR_UNKNOWN_URL_SCHEME?

Para entender o erro ERR_UNKNOWN_URL_SCHEME, vamos primeiro discutir os aplicativos nativos. Simplificando, um aplicativo nativo é instalado em um dispositivo móvel e projetado para um sistema operacional específico.

Você pode encontrar aplicativos nativos na App Store ou na Google Play Store:

Loja do Google Play.
Loja do Google Play.

Atualmente, o Android controla 72% do mercado de sistemas operacionais de dispositivos móveis. Por esta razão, você pode querer desenvolver seu aplicativo nativo para a Loja do Google Play. Para fazer isso, você vai usar o Android Studio, que é o Ambiente de Desenvolvimento Integrado (IDE) do Android:

Estúdio Android.
Estúdio Android.

Enquanto você está desenvolvendo seu aplicativo, é importante permitir que os usuários visualizem o conteúdo incorporado do navegador da web. Os usuários que não precisam navegar de um navegador para o seu aplicativo terão um UX mais consistente.

Para adicionar este recurso ao seu aplicativo, você usará o WebView. Esta classe especial exibe páginas da web diretamente de um aplicativo nativo. Embora o navegador não tenha recursos extensos como uma barra de pesquisa ou controles de navegação, o WebView irá renderizar uma página da web com sucesso.

Entretanto, seu aplicativo nativo também poderia produzir um erro ERR_UNKNOWN_URL_SCHEME. Neste caso, o site solicitado tem um esquema de URL que o dispositivo móvel não pode reconhecer.

O ERR_UNKNOWN_URL_SCHEME é comumente um bug do Chrome. Ele tem sido um assunto de destaque desde o Chrome 40. No entanto, ele pode ter algumas causas diferentes.

O que causa o erro ERR_UNKOWN_URL_SCHEME?

Embora o WebView possa ser útil em aplicativos nativos, ele só está equipado para processar alguns esquemas de URLs diferentes. Um esquema de URL fornece informações sobre como a URL deve ser interpretada.

Os esquemas de URL padrão são ‘https://’ e ‘http://’. Aqui estão alguns esquemas de URL que podem causar o ERR_UNKNOWN_URL_SCHEME:

  • mailto://
  • whatsapp://
  • file://
  • telnet://
  • intent://
  • mercado://
  • app://
  • mail://
  • comprar://

Se você é um desenvolvedor de aplicativos, você precisará usar uma codificação URL específica para evitar que estes esquemas de URL causem erros. Caso contrário, os usuários não conseguirão usar o WebView em seu aplicativo nativo.

Alternativamente, o erro ERR_UNKNOWN_URL_SCHEME pode ocorrer quando um usuário tenta abrir uma URL redirecionada. Você também pode ver esta mensagem após usar o OAuth com um cartão personalizado Chrome.

Como corrigir o erro ERR_UNKOWN_URL_SCHEME (8 Métodos)

Para os desenvolvedores, o erro ERR_UNKNOWN_URL_SCHEME significa que o WebView do seu aplicativo não está efetivamente exibindo as páginas do navegador web. Isso irá impedir que os usuários vejam o conteúdo certo.

Se você é um desenvolvedor ou um usuário frontend, há algumas maneiras de resolver o problema. Aqui estão oito correções!

1. Desativar extensões cromadas

Muitos erros do Chrome podem ser resolvidos através da resolução de problemas com as extensões do seu navegador. Para fazer isso, vá para More Tools > Extensions. Alternativamente, você pode simplesmente procurar por “chrome://extensions/”:

Abra as extensões do Chrome.
Abra as extensões do Chrome.

Nesta página, você verá uma lista de suas extensões Chrome instaladas. Primeiro, desabilite todas elas usando o botão de alternância no canto inferior direito:

Desabilitar extensões do Chrome.
Desabilitar extensões do Chrome.

Então, verifique se o problema foi resolvido. Se foi, você saberá que houve um problema com uma das extensões.

Para descobrir qual extensão estava causando o erro ERR_UNKNOWN_URL_SCHEME, reative um por um. Depois de ativar uma extensão, veja se a questão reaparece. Quando isso acontecer, remova essa extensão completamente.

2. Limpe o cache e os cookies do Chrome

Enquanto você navega na Internet, seu navegador irá salvar dados de sites em um cache. Isso garantirá que sua segunda visita seja muito mais rápida. Entretanto, estes dados em cache podem facilmente se corromper.

Se a primeira solução não resolveu o erro ERR_UNKNOWN_URL_SCHEME, você pode precisar limpar o cache do seu navegador. No Google Chrome, vá para Mais Ferramentas > Limpar Dados de Navegação:

Abra as extensões do Chrome.
Abra as extensões do Chrome.

Então, certifique-se de selecionar Cached images and files. Se você quiser, você também pode limpar seu histórico de navegação, cookies, e outros dados salvos do site:

Limpando o Cache do Chrome.
Limpando o Cache do Chrome.

Depois disso, tente recarregar a página que você estava tentando acessar. Se ela carregar sem um erro, você resolveu o problema!

3. Desative a Aceleração de Hardware

A aceleração do hardware acontece quando um navegador usa o hardware do seu dispositivo para aumentar a eficiência. No Google Chrome, a Unidade de Processamento Gráfico (GPU) do seu dispositivo começará a processar tarefas com gráficos pesados, como jogos ou vídeos de jogo.

Na maioria das vezes, a aceleração de hardware permite ao Chrome realizar tarefas mais complexas do que seu software pode suportar. Entretanto, este recurso também pode causar atraso, congelamento e até mesmo travamentos.

Portanto, você pode querer desativar a aceleração do hardware. Primeiro, abra a página de Settings do Chrome. Em seguida, clique na aba System:

Desativar aceleração de hardware.
Desativar aceleração de hardware.

Finalmente, use o botão de alternância para desabilitar a aceleração do hardware. Você será solicitado solicitado a reiniciar o Chrome com essa nova configuração.

4. Desabilite seu Firewall

Outra razão para o erro ERR_UNKNOWN_URL_SCHEME é um firewall configurado incorretamente. Para ver se este é o caso, você pode desativar temporariamente o firewall em seu dispositivo.

Para usuários de Mac, clique no ícone da maçã. Em seguida, selecione System Settings:

Configurações do sistema Mac.
Configurações do sistema Mac.

Da lista de abas, clique em Network. Em seguida, encontre a opção Firewall e ative-a:

Desativar o firewall do Mac.
Desativar o firewall do Mac.

Se você tem um computador Windows, clique em Start e abra as Settings. Depois, navegue para Privacy & Security > Windows security > Firewall & network protection:

Configurações de Firewall e proteção de rede no Windows.
Configurações de Firewall e proteção de rede no Windows.

Agora você precisará selecionar Domain network, Private network ou Public network. Quando você fizer isso, encontre a configuração do Microsoft Defender Firewall e ative-o:

Desabilitando o Microsoft Defender Firewall.
Desabilitando o Microsoft Defender Firewall.

Você verá um popup de segurança pedindo que você confirme sua escolha. Clique em OK para salvar a mudança.

5. Crie um novo perfil de usuário do Chrome

Se os métodos anteriores não resolveram o erro ERR_UNKNOWN_URL_SCHEME, você poderia tentar criar um perfil de usuário Chrome completamente novo. Então, veja se você pode visitar a página sem nenhum problema.

Felizmente, o Google Chrome facilita a customização de seus perfis. No canto superior direito, clique na imagem do seu perfil. Na parte inferior da janela pop-up, clique em Add:

Criar um novo perfil no Chrome.
Criar um novo perfil no Chrome.

Isso permitirá que você crie um novo perfil. Você pode entrar em uma conta Chrome já existente ou clicar em Continue without an account:

Configurar o perfil Chrome.
Configurar o perfil Chrome.

Antes de começar a navegar, dê um nome ao perfil. Além disso, você pode personalizar o esquema de cores:

Personalizar o perfil no Chrome.
Personalizar o perfil no Chrome.

Depois disso, você terá um novo perfil no Chrome independente de suas outras contas. Ao usar esse perfil, tente carregar a página web alvo. Se o problema persistir, é uma boa ideia entrar em contato com o desenvolvedor do aplicativo, que resolverá o problema para você.

6. Abra a URL em uma nova janela

Até agora, explicamos como os usuários podem potencialmente resolver o erro ERR_UNKNOWN_URL_SCHEME em um navegador. Se você é um desenvolvedor, precisará saber como solucionar esse problema para que seu aplicativo tenha um WebView sem erros.

Uma correção fácil envolve a edição do seu código href URL. Ao incluir um atributo de destino no HTML do seu aplicativo, você especificará como o navegador deve ser aberto.

Por exemplo, você pode adicionar o código HTML target=”_blank”. Isso abrirá o WebView em uma nova janela. Aqui está um exemplo:

<a href=”https://www.w3schools.com” target=”_blank”>Visit W3Schools</a>

Embora esta possa ser uma solução eficaz a curto prazo, ela pode impactar negativamente a Experiência do Usuário (UX) do seu aplicativo. No desenvolvimento web, é uma boa prática evitar abrir novas janelas.

O trecho de código acima removerá o botão Voltar, o que pode confundir os usuários quando eles quiserem voltar à página anterior.

7. Adicione um Novo Intent

Como desenvolvedor Android, você precisará usar intents. Basicamente, um intent descreve a ação que você deseja que o aplicativo execute. Se você precisa corrigir um erro de esquema de URL, pode considerar incluir um intent para o conteúdo ser carregado em um aplicativo externo.

Por exemplo, você pode querer o esquema de URL ‘maps://’ para abrir um aplicativo de mapas padrão do usuário. Alternativamente, o ‘mailto://’ pode abrir o aplicativo de e-mail.

Para adicionar um novo intent, você usará uma instrução IF. Isso dirá ao dispositivo para abrir esquemas especiais em um aplicativo externo relevante. No entanto, esquemas de URL padrão como ‘https://’ ou ‘http://’ serão abertos normalmente.

Veja como esse intent ficaria em ação:

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (url == null || url.startsWith("http://") || url.startsWith("https://")) {

return false;

}

try {

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));

view.getContext().startActivity(intent);

return true;

} catch (Exception e) {

Log.i(TAG, "shouldOverrideUrlLoading Exception:" + e);

return true;

}

}

No entanto, você pode adicionar um intent personalizado para aplicativos externos específicos. Se você quer direcionar os usuários para o WhatsApp instalado no dispositivo deles, veja como a substituição da URL poderia ser alterada:

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

if (url.startsWith("whatsapp://")) {

webview.stopLoading();

try {

Intent whatsappIntent = new Intent(Intent.ACTION_SEND);

whatsappIntent.setType("text/plain");

whatsappIntent.setPackage("com.whatsapp");

whatsappIntent.putExtra(Intent.EXTRA_TEXT, webview.getUrl() + " - Shared from webview ");

startActivity(whatsappIntent);

} catch (android.content.ActivityNotFoundException ex) {

String MakeShortText = "Whatsapp has not been installed";

Toast.makeText(WebactivityTab1.this, MakeShortText, Toast.LENGTH_SHORT).show();

}

};

};

Este código permitirá que seu aplicativo abra o WhatsApp em um dispositivo do usuário. Se ele não estiver instalado, haverá uma mensagem de brinde dizendo aos usuários que “O Whatsapp não foi instalado”

8. Desative esquemas de URLs não-padrão

Em vez de usar intents, você também pode desativar completamente os esquemas de URL não padrão. Isso evitará que você utilize quaisquer esquemas de URL além de ‘http://’ e ‘https://’.

Aqui está como implementar isto em HTML:

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);

if (url.startsWith("http") || url.startsWith("https")) {

return true;

}else {

webview.stopLoading();

webview.goBack();

Toast.makeText(MainActivity.this, "Error: Unknown link type", Toast.LENGTH_SHORT).show();

}

return false;

}

Se um usuário clicar em um link que usa um esquema personalizado, uma mensagem de toast exibirá a mensagem “Error: Unknown link type”. Como a WebView do seu aplicativo não suportará esquemas personalizados, você pode evitar completamente o erro ERR_UNKNOWN_URL_SCHEME.

Resumo

Quando as pessoas usam seu aplicativo nativo, elas vão querer que os links externos se abram dentro do mesmo aplicativo. Se o site solicitado não tiver um esquema de URL conhecido, o dispositivo móvel do usuário retornará um erro ERR_UNKNOWN_URL_SCHEME.

Na interface, você pode solucionar esse problema em navegadores Chrome desativando a aceleração de hardware ou criando um perfil de usuário completamente novo. No entanto, na maioria dos casos, o desenvolvedor do aplicativo precisará resolver esse erro. Como desenvolvedor, você poderá corrigir o erro ERR_UNKNOWN_URL_SCHEME adicionando um novo intent ou abrindo a URL em uma nova janela.

Enquanto você desenvolve seu aplicativo, vai precisar de uma hospedagem confiável e estável. Nossa hospedagem de aplicativos tem 25 centros de dados e suporte via chat com especialistas 24/7, para que você possa focar apenas no desenvolvimento!