Impedir que os aplicativos abram links nas guias personalizadas do Chrome (por exemplo, abra diretamente no navegador padrão)

20

Há pouco tempo, o Google adicionou um novo recurso chamado Chrome Custom Tabs desde o Chrome 45 no Android JellyBean ou posterior.

O que são guias personalizadas do Chrome?

Os desenvolvedores de aplicativos podem escolher quando um usuário toca em um URL para iniciar um navegador ou criar seu próprio navegador no aplicativo usando o WebViews.

Ambas as opções apresentam desafios - iniciar o navegador é uma pesada alternância de contexto que não é personalizável, enquanto as WebViews não compartilham o estado com o navegador e adicionam sobrecarga de manutenção.

As guias personalizadas do Chrome dão aos aplicativos mais controle sobre sua experiência na Web e tornam as transições entre o conteúdo nativo e da Web mais fáceis sem precisar recorrer a um WebView.

Quando isso estará disponível?

A partir do Chrome 45, as guias personalizadas do Chrome agora estão disponíveis para todos os usuários do Chrome, em todas as versões Android compatíveis do Chrome (Jellybean em diante).

demonstração de guias personalizadas

O Google integrou esse recurso em alguns de seus aplicativos (por exemplo , Google+ , Pesquisa do Google ) e agora aplicativos de terceiros também podem usá-lo (por exemplo , Twitter , Stack Exchange ).

Enquanto alguns aplicativos fornecem configurações para ativar / desativar (por exemplo, Pesquisa do Google ), outros não parecem ser possíveis para desativar isso. Sei que ainda posso abrir o link no Chrome tocando no menu excedente (3 pontos no canto superior direito) e selecione Abrir no Chrome . No entanto, seria preferível que ele possa ser desativado em aplicativos específicos.

Então, minha pergunta é: é possível desativar esse recurso, de preferência em aplicativos seletivos ? (por desativação, pretendo abrir o link diretamente no navegador padrão ou solicitar ao usuário que escolha um navegador)

Nota : estou aberto a todas as sugestões, incluindo soluções raiz ou até desinstalar o Chrome no pior cenário. No entanto, respostas mais práticas são preferidas.

Andrew T.
fonte

Respostas:

8

A página de ajuda das guias personalizadas diz:

O que acontece se o usuário não tiver uma versão recente do Chrome instalada?

Guias personalizadas usa um ACTION_VIEWIntent com extras extras para personalizar a interface do usuário. Isso significa que, por padrão, a página será aberta no navegador do sistema ou no navegador padrão do usuário.

Se o usuário tiver o Chrome instalado e o navegador padrão, ele selecionará automaticamente EXTRASe apresentará uma interface do usuário personalizada. Também é possível para outro navegador usar os extras do Intent para fornecer uma interface personalizada semelhante.

Isso significa que, se você tornar outro navegador o padrão (isso pode ser feito em Configurações> Aplicativos> menu Cog> Aplicativos Padrão ), qualquer aplicativo que tentar abrir uma Guia Personalizada abrirá o link nesse navegador.

Atualização: isso também significa que é possível escrever um aplicativo "gerenciador" que se apresente como um navegador (lida com a ACTION_VIEWintenção) e, ao receber essa intenção, verifica se ele está relacionado às guias personalizadas EXTRASe, dependendo de alguma lógica, abre o navegador do seu navegador. escolha usando uma intenção explícita (em que o nome do pacote de aplicativos desejado é especificado explicitamente).

Mikhail Naganov
fonte
Obrigado, mudar o navegador padrão funcionou um pouco em alguns aplicativos (por exemplo, aplicativo Stack Exchange), mas não funcionou nos demais (por exemplo, Google Notícias e clima), não tenho certeza pelas razões ... O aplicativo gerenciador é uma idéia interessante e eu tentarei experimentar se funciona com o aplicativo de automação!
Andrew T.
11
É porque News & Weather (tentou v 2.3.3.) Especifica o componente explicitamente na intenção: START u0 {act=android.intent.action.VIEW dat=http://news.google.com/... flg=0x14002000 cmp=com.android.chrome/org.chromium.chrome.browser.ChromeTabbedActivity (has extras)} from uid 10041 on display 0. Estilo ruim, mas não é nada que você possa fazer sobre isso :(
Mikhail Naganov 31/05
2

Estou usando o 7.1.1 android. Abra o aplicativo Google ou faça uma pesquisa, clique no hambúrguer no canto superior esquerdo e vá para Configurações.

Acesse Contas e privacidade.

Desative 'abrir páginas da web no aplicativo'.

Isso parece desativar as guias personalizadas do Chrome.

Mike Cheel
fonte
3
Isso desativa as guias personalizadas apenas no aplicativo de pesquisa (possivelmente outros aplicativos do Google), mas não em todo o sistema.
precisa saber é o seguinte