Como abrir um URL a partir do código no navegador da Web incorporado, e não no meu aplicativo?
Eu tentei isso:
try {
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
startActivity(myIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "No application can handle this request."
+ " Please install a webbrowser", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
mas eu recebi uma exceção:
No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
android
url
android-intent
android-browser
Arutha
fonte
fonte
Respostas:
Tente o seguinte:
Isso funciona bem para mim.
Quanto ao "http: //" ausente, eu faria algo assim:
Eu provavelmente também preencheu seu EditText de que o usuário está digitando uma URL com "http: //".
fonte
http://
esquema - a exceção mostrada sugere que seu URL não possui o esquema.if (!url.startsWith("http://") && !url.startsWith("https://"))
é um erro comum que pode levar a URLs como file: // e interromper alguns bons casos de uso. Tente analisar uri com a classe URI e verifique se há um esquema. Se não, adicione "http: //";)resolveCheck
. Consulte os documentos oficiais : Cuidado: se não houver aplicativos no dispositivo que possam receber a intenção implícita, seu aplicativo falhará quando chamar startActivity (). Para verificar primeiro se existe um aplicativo para receber a intenção, chame resolveActivity () no seu objeto Intent.Uma maneira comum de conseguir isso é com o próximo código:
que pode ser alterado para uma versão de código curto ...
ou:
o mais curto! :
feliz codificação!
fonte
Resposta Simples
Você pode ver a amostra oficial do Android Developer .
Como funciona
Por favor, dê uma olhada no construtor de
Intent
:Você pode passar a
android.net.Uri
instância para o segundo parâmetro e um novo Intent é criado com base no URL de dados fornecido.E, em seguida, basta ligar
startActivity(Intent intent)
para iniciar uma nova atividade, que acompanha o Intent com o URL fornecido.Preciso da
if
declaração de cheque?Sim. Os documentos dizem:
Bônus
Você pode escrever em uma linha ao criar a instância Intent, como abaixo:
fonte
Em 2.3, tive melhor sorte com
A diferença é o uso de,
Intent.ACTION_VIEW
e não a String"android.intent.action.VIEW"
fonte
Tente o seguinte:
ou, se desejar, o navegador da web será aberto em sua atividade e faça o seguinte:
e se você quiser usar o controle de zoom no seu navegador, poderá usar:
fonte
Se você deseja mostrar ao usuário um diálogo com toda a lista de navegadores, para que ele possa escolher o preferido, aqui está um código de exemplo:
fonte
http
orhttps
e, em java, é uma boa prática declarar 'cordas mágicas' como constantes.context.startActivity
. Muito útil quando chamá-lo de uma classe externaAssim como as soluções que outros escreveram (que funcionam bem), gostaria de responder a mesma coisa, mas com uma dica que acho que a maioria prefere usar.
Caso deseje que o aplicativo comece a abrir em uma nova tarefa, independente de sua preferência, em vez de permanecer na mesma pilha, você pode usar este código:
Também há uma maneira de abrir o URL nas guias personalizadas do Chrome . Exemplo no Kotlin:
fonte
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
está obsoletooutra opção Em Carregar URL no mesmo aplicativo usando Webview
fonte
Você também pode ir por esse caminho
Em xml:
No código java:
No Manifest, não se esqueça de adicionar permissão à Internet ...
fonte
O Webview pode ser usado para carregar o URL em seu aplicativo. O URL pode ser fornecido pelo usuário na exibição de texto ou você pode codificá-lo.
Também não se esqueça das permissões da Internet no AndroidManifest.
fonte
Uma versão de código curto ...
fonte
No bloco try, cole o código a seguir, o Android Intent usa diretamente o link nos chaves URI (Uniform Resource Identifier) para identificar o local do seu link.
Você pode tentar isso:
fonte
Simples e Prática Recomendada
Método 1:
Método 2:
fonte
context!!.packageManager
vez degetPackageManager()
em aFragment
.fonte
fonte
A resposta do MarkB está certa. No meu caso, estou usando o Xamarin, e o código a ser usado com C # e Xamarin é:
Esta informação é obtida em: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
fonte
As guias personalizadas do Chrome já estão disponíveis:
A primeira etapa é adicionar a Biblioteca de suporte a guias personalizadas ao seu arquivo build.gradle:
E então, para abrir uma guia personalizada do Chrome:
Para mais informações: https://developer.chrome.com/multidevice/android/customtabs
fonte
Com base na resposta de Mark B e nos comentários abaixo:
fonte
android.webkit.URLUtil
tem o métodoguessUrl(String)
funcionando perfeitamente (mesmo comfile://
oudata://
) desdeApi level 1
(Android 1.0). Use como:Na chamada de atividade:
Verifique o
guessUrl
código completo para mais informações.fonte
Ok, verifiquei todas as respostas, mas qual aplicativo tem um aprofundamento na mesma URL que o usuário deseja usar?
Hoje eu peguei esse caso e a resposta é
browserIntent.setPackage("browser_package_name");
por exemplo :
Obrigado!
fonte
Visualização simples do site por intenção,
use este código simples para visualizar seu site no aplicativo Android.
Adicione permissão à Internet no arquivo de manifesto,
fonte
Esse erro ocorreu devido a URL inválido, o sistema operacional Android não consegue encontrar a exibição de ações para seus dados. Portanto, você confirma que o URL é válido ou não.
fonte
Eu acho que esse é o melhor
Coloque o código abaixo na classe global
fonte
Dessa maneira, é utilizado um método para permitir a entrada de qualquer String em vez de ter uma entrada fixa. Isso economiza algumas linhas de código se usado várias vezes, pois você só precisa de três linhas para chamar o método.
O uso desse método o torna universalmente utilizável. A TI não precisa ser colocada em uma atividade específica, pois você pode usá-la assim:
Ou, se você deseja iniciá-lo fora de uma atividade, basta chamar startActivity na instância da atividade:
Como visto nesses dois blocos de código, há uma verificação nula. É assim que retorna nulo se não houver um aplicativo para lidar com a intenção.
O método padrão é HTTP, se não houver um protocolo definido, pois existem sites que não possuem um certificado SSL (o que você precisa para uma conexão HTTPS) e esses pararão de funcionar se você tentar usar HTTPS e ele não estiver lá. . Qualquer site ainda pode forçar o HTTPS, então esses lados o levam ao HTTPS de qualquer maneira
Como esse método usa recursos externos para exibir a página, não é necessário declarar a permissão INternet. O aplicativo que exibe a página da web precisa fazer isso
fonte
// Ouvinte do OnClick
// Seu método Util
fonte
Basta ir com um pequeno para abrir seu URL no navegador:
fonte
A resposta de Kotlin:
Eu adicionei uma extensão
Uri
para tornar isso ainda mais fácilComo bônus, aqui está uma função de extensão simples para converter com segurança uma String em Uri.
fonte
Por isso, procurei por um longo tempo, porque todas as outras respostas estavam abrindo o aplicativo padrão para esse link, mas não o navegador padrão e era isso que eu queria.
Finalmente consegui:
BTW, você pode notar.
context
Seja como for, porque eu usei isso para um método utilitário estático, se você estiver fazendo isso em uma atividade, não será necessário.fonte
Verifique se o seu URL está correto. Para mim, havia um espaço indesejado antes do URL.
fonte
Tente isso .. Trabalhou para mim!
código xml: -
--------- OU ------------------
fonte