¿Cómo abrir una URL desde el código en el navegador web incorporado en lugar de dentro de mi aplicación?
Intenté esto:
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();
}
pero tengo una excepción:
No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
Respuestas:
Prueba esto:
Eso funciona bien para mi.
En cuanto al "http: //" que faltaba, simplemente haría algo como esto:
Probablemente también rellene previamente su EditText que el usuario está escribiendo una URL con "http: //".
fuente
http://
esquema; la excepción que se muestra sugiere que su URL carece del esquema.if (!url.startsWith("http://") && !url.startsWith("https://"))
es un error común que puede llevarlo a URL como file: // y romper algunos buenos casos de uso. Intente analizar uri con la clase URI y verifique si hay un esquema. Si no, agregue "http: //";)resolveCheck
. Consulte los documentos oficiales : Precaución: si no hay aplicaciones en el dispositivo que puedan recibir la intención implícita, su aplicación se bloqueará cuando llame a startActivity (). Para verificar primero que existe una aplicación para recibir la intención, llame a resolveActivity () en su objeto Intent.Una forma común de lograr esto es con el siguiente código:
eso podría cambiarse a una versión de código corto ...
o:
¡el más corto! :
feliz codificación!
fuente
Respuesta simple
Puedes ver la muestra oficial del desarrollador de Android .
Cómo funciona
Por favor, eche un vistazo al constructor de
Intent
:Puede pasar la
android.net.Uri
instancia al segundo parámetro, y se crea una nueva intención basada en la URL de datos dada.Y luego, simplemente llame
startActivity(Intent intent)
para comenzar una nueva Actividad, que se incluye con la Intención con la URL dada.¿Necesito el
if
estado de cuenta?Si. Los documentos dicen:
Prima
Puede escribir en una línea al crear la instancia de Intent como a continuación:
fuente
En 2.3, tuve mejor suerte con
La diferencia es el uso de
Intent.ACTION_VIEW
String en lugar de"android.intent.action.VIEW"
fuente
Prueba esto:
o si lo desea, abra el navegador web en su actividad y haga lo siguiente:
y si desea usar el control de zoom en su navegador, puede usar:
fuente
Si desea mostrarle al usuario un diálogo con toda la lista del navegador, para que pueda elegir preferido, aquí hay un código de muestra:
fuente
http
ohttps
, y en java es una buena práctica declarar 'cadenas mágicas' como constantes.context.startActivity
. Muy útil cuando se llama desde una clase externaAl igual que las soluciones que otros han escrito (que funcionan bien), me gustaría responder lo mismo, pero con un consejo que creo que la mayoría preferiría usar.
En caso de que desee que la aplicación comience a abrirse en una nueva tarea, independiente de la suya, en lugar de permanecer en la misma pila, puede usar este código:
También hay una manera de abrir la URL en las pestañas personalizadas de Chrome . Ejemplo en Kotlin:
fuente
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
está en desusootra opción En cargar URL en la misma aplicación usando Webview
fuente
También puedes ir por aquí
En xml:
En código java:
En el Manifiesto, no se olvide de agregar el permiso de Internet ...
fuente
Webview se puede utilizar para cargar la URL en su aplicación. El usuario puede proporcionar la URL en la vista de texto o puede codificarla.
Además, no olvide los permisos de Internet en AndroidManifest.
fuente
Una versión de código corto ...
fuente
Dentro de su bloque de prueba, pegue el siguiente código, Android Intent usa directamente el enlace dentro de las llaves URI (Identificador Uniforme de Recursos) para identificar la ubicación de su enlace.
Puedes probar esto:
fuente
Simple y mejor práctica
Método 1:
Método 2:
fuente
context!!.packageManager
lugar degetPackageManager()
en aFragment
.fuente
fuente
La respuesta de MarkB es correcta. En mi caso, estoy usando Xamarin, y el código para usar con C # y Xamarin es:
Esta información se obtiene de: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
fuente
Las pestañas personalizadas de Chrome ahora están disponibles:
El primer paso es agregar la Biblioteca de soporte de pestañas personalizadas a su archivo build.gradle:
Y luego, para abrir una pestaña personalizada de Chrome:
Para más información: https://developer.chrome.com/multidevice/android/customtabs
fuente
Basado en la respuesta de Mark B y los comentarios a continuación:
fuente
android.webkit.URLUtil
tiene el métodoguessUrl(String)
funcionando perfectamente bien (incluso confile://
odata://
) desdeApi level 1
(Android 1.0). Usar como:En la llamada de actividad:
Consulte el
guessUrl
código completo para más información.fuente
De acuerdo, verifiqué cada respuesta, pero ¿qué aplicación tiene enlaces profundos con la misma URL que el usuario quiere usar?
Hoy tengo este caso y la respuesta es
browserIntent.setPackage("browser_package_name");
p.ej :
¡Gracias!
fuente
Vista simple del sitio web por intención,
use este código simple para ver su sitio web en la aplicación de Android.
Agregar permiso de internet en el archivo de manifiesto,
fuente
Ese error se produjo debido a una URL no válida, el sistema operativo Android no puede encontrar la vista de acción para sus datos. Por lo tanto, debe validar que la URL es válida o no.
fuente
Creo que este es el mejor
Poner el siguiente código en la clase global
fuente
De esta manera, se utiliza un método que le permite ingresar cualquier Cadena en lugar de tener una entrada fija. Esto guarda algunas líneas de código si se usa varias veces, ya que solo necesita tres líneas para llamar al método.
El uso de este método lo hace universalmente utilizable. No es necesario ubicarlo en una actividad específica, ya que puede usarlo así:
O si desea iniciarlo fuera de una actividad, simplemente llame a startActivity en la instancia de actividad:
Como se ve en ambos bloques de código, hay una comprobación nula. Esto es así porque devuelve nulo si no hay una aplicación para manejar la intención.
Este método predeterminado es HTTP si no hay un protocolo definido, ya que hay sitios web que no tienen un certificado SSL (lo que necesita para una conexión HTTPS) y esos dejarán de funcionar si intenta usar HTTPS y no está allí . Cualquier sitio web todavía puede pasar a HTTPS, por lo que esos lados te llevan a HTTPS de cualquier manera
Debido a que este método utiliza recursos externos para mostrar la página, no es necesario que declare el permiso INternet. La aplicación que muestra la página web tiene que hacer eso
fuente
// OnClick Listener
// Su método de utilidad
fuente
Simplemente vaya con uno corto para abrir su URL en el navegador:
fuente
La respuesta de Kotlin:
He agregado una extensión en
Uri
para hacer esto aún más fácilComo beneficio adicional, aquí hay una función de extensión simple para convertir de forma segura una Cadena a Uri.
fuente
Así que lo he buscado durante mucho tiempo porque todas las otras respuestas estaban abriendo la aplicación predeterminada para ese enlace, pero no el navegador predeterminado y eso era lo que quería.
Finalmente logré hacerlo:
Por cierto, puede notar.
context
Lo que sea, porque he usado esto para un método de utilidad estática, si está haciendo esto en una actividad, no es necesario.fuente
Comprueba si tu url es correcta. Para mí había un espacio no deseado antes de la url.
fuente
Prueba esto ... ¡Trabajó para mí!
código xml: -
--------- O ------------------
fuente