pagina directo desde crear chrome aplicacion acceso abrir android url android-intent android-browser

directo - ¿Cómo puedo abrir una URL en el navegador web de Android desde mi aplicación?



crear acceso directo android pagina web chrome (28)

¿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


Respuesta simple

Puedes ver la muestra oficial de Android Developer .

/** * Open a web page of a specified URL * * @param url URL to open */ public void openWebPage(String url) { Uri webpage = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, webpage); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } }

Cómo funciona

Por favor, eche un vistazo al constructor de Intent :

public Intent (String action, Uri uri)

Puede pasar la instancia de android.net.Uri al segundo parámetro, y se crea una nueva intención en función de la url de datos dada.

Y luego, simplemente llame a startActivity(Intent intent) para iniciar una nueva actividad, que se incluye con el Intent con la URL dada.

¿Necesito la declaración if check?

Sí. La documentación dice:

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 exista una aplicación para recibir la intención, llame a resolucionActividad () en su objeto Intención. Si el resultado no es nulo, hay al menos una aplicación que puede manejar la intención y es seguro llamar a startActivity (). Si el resultado es nulo, no debe usar la intención y, si es posible, debe deshabilitar la función que invoca la intención.

Prima

Puede escribir en una línea al crear la instancia de Intent como a continuación:

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


Una forma común de lograr esto es con el siguiente código:

String url = "http://www..com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i);

que podría ser cambiado a una versión de código corto ...

Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www..com")); startActivity(intent);

o:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www..com")); startActivity(intent);

¡el más corto! :

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www..com")));

feliz codificación!


// OnClick Listener

@Override public void onClick(View v) { String webUrl = news.getNewsURL(); if(webUrl!="") Utils.intentWebURL(mContext, webUrl); }

// Tu Método Util

public static void intentWebURL(Context context, String url) { if (!url.startsWith("http://") && !url.startsWith("https://")) { url = "http://" + url; } boolean flag = isURL(url); if (flag) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(browserIntent); } }


Al 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 abrir en una nueva tarea, independiente de su cuenta, en lugar de permanecer en la misma pila, puede usar este código:

final Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK); startActivity(intent);


Basado en la respuesta de Mark B y los comentarios a continuación:

protected void launchUrl(String url) { Uri uri = Uri.parse(url); if (uri.getScheme() == null || uri.getScheme().isEmpty()) { uri = Uri.parse("http://" + url); } Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri); if (browserIntent.resolveActivity(getPackageManager()) != null) { startActivity(browserIntent); } }


Compruebe si su url es correcta. Para mí había un espacio no deseado antes de url.


Creo que esto es lo mejor.

openBrowser(context, "http://www.google.com")

Ponga el código de abajo en clase global

public static void openBrowser(Context context, String url) { if (!url.startsWith("http://") && !url.startsWith("https://")) url = "http://" + url; Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(browserIntent); }


De acuerdo, verifiqué todas las respuestas, pero ¿qué aplicación se ha vinculado con la misma URL que el usuario desea usar?

Hoy recibí este caso y la respuesta es browserIntent.setPackage("browser_package_name");

p.ej :

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); browserIntent.setPackage("com.android.chrome"); // Whatever browser you are using startActivity(browserIntent);

¡Gracias!


De esta manera, se utiliza un método para permitirle ingresar cualquier cadena en lugar de tener una entrada fija. Esto ahorra algunas líneas de código si se usa una cantidad repetida de veces, ya que solo necesita tres líneas para llamar al método.

public Intent getWebIntent(String url) { //Make sure it is a valid URL before parsing the URL. if(!url.contains("http://") && !url.contains("https://")){ //If it isn''t, just add the HTTP protocol at the start of the URL. url = "http://" + url; } //create the intent Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)/*And parse the valid URL. It doesn''t need to be changed at this point, it we don''t create an instance for it*/); if (intent.resolveActivity(getPackageManager()) != null) { //Make sure there is an app to handle this intent return intent; } //If there is no app, return null. return null; }

El uso de este método lo hace universalmente utilizable. IT no tiene que ser colocado en una actividad específica, ya que puedes usarlo así:

Intent i = getWebIntent("google.com"); if(i != null) startActivity();

O si desea iniciarlo fuera de una actividad, simplemente llame a startActivity en la instancia de actividad:

Intent i = getWebIntent("google.com"); if(i != null) activityInstance.startActivity(i);

Como se ve en estos dos bloques de código, hay una comprobación nula. Esto es como se devuelve nulo si no hay una aplicación para manejar la intención.

Este método se establece de forma predeterminada en 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 forzar el uso de 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 de Internet. La aplicación que muestra la página web tiene que hacer eso.


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:

Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(myIntent);


En 2.3, tuve mejor suerte con

final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)); activity.startActivity(intent);

La diferencia es el uso de Intent.ACTION_VIEW lugar de la cadena "android.intent.action.VIEW"


Intenta esto ... Trabajó para mí!

public void webLaunch(View view) { WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVisibility(View.VISIBLE); View view1=findViewById(R.id.recharge); view1.setVisibility(View.GONE); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.loadUrl("<your link>"); }

código xml: -

<WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webview" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="fill_parent" />

--------- O ------------------

String url = ""; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i);



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:

dependencies { ... compile ''com.android.support:customtabs:24.2.0'' }

Y luego, para abrir una pestaña personalizada de chrome:

String url = "https://www.google.pt/"; CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); CustomTabsIntent customTabsIntent = builder.build(); customTabsIntent.launchUrl(this, Uri.parse(url));

Para obtener más información: https://developer.chrome.com/multidevice/android/customtabs


Prueba este uno OmegaIntentBuilder

OmegaIntentBuilder.from(context) .web("Your url here") .createIntentHandler() .failToast("You don''t have app for open urls") .startActivity();


Prueba esto:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(browserIntent);

Eso funciona bien para mí.

En cuanto a la falta de "http: //" solo haría algo como esto:

if (!url.startsWith("http://") && !url.startsWith("https://")) url = "http://" + url;

También es probable que rellene previamente el texto de edición que el usuario está escribiendo una URL con "http: //".


Prueba esto:

Uri uri = Uri.parse("https://www.google.com"); startActivity(new Intent(Intent.ACTION_VIEW, uri));

o si lo desea, entonces el navegador web abierto en su actividad, haga lo siguiente:

WebView webView = (WebView) findViewById(R.id.webView1); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); webView.loadUrl(URL);

y si desea usar el control de zoom en su navegador, entonces puede usar:

settings.setSupportZoom(true); settings.setBuiltInZoomControls(true);


Se puede usar Webview para cargar la URL en su aplicación. La URL puede ser proporcionada por el usuario en la vista de texto o usted puede codificarla.

Además, no olvide los permisos de internet en AndroidManifest.

String url="http://developer.android.com/index.html" WebView wv=(WebView)findViewById(R.id.webView); wv.setWebViewClient(new MyBrowser()); wv.getSettings().setLoadsImagesAutomatically(true); wv.getSettings().setJavaScriptEnabled(true); wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); wv.loadUrl(url); private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }


Si desea hacer esto con XML sin programación, puede usarlo en su TextView:

android:autoLink="web" android:linksClickable="true"


Si desea mostrar al usuario un diálogo con todas las listas del navegador, para que él pueda elegir el preferido, aquí tiene un código de muestra:

private static final String HTTPS = "https://"; private static final String HTTP = "http://"; public static void openBrowser(final Context context, String url) { if (!url.startsWith(HTTP) && !url.startsWith(HTTPS)) { url = HTTP + url; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(Intent.createChooser(intent, "Choose browser"));// Choose browser is arbitrary :) }


También puedes ir por este camino.

En xml:

<?xml version="1.0" encoding="utf-8"?> <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/webView1" android:layout_width="fill_parent" android:layout_height="fill_parent" />

En código java:

public class WebViewActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); } }

En Manifest no olvides añadir permiso de internet ...


Una versión en código corto ...

if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){ strUrl= "http://" + strUrl; } startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl)));


android.webkit.URLUtil tiene el método guessUrl(String) funcionando perfectamente bien (incluso con file:// o data:// ) desde Api level 1 (Android 1.0). Usar como:

String url = URLUtil.guessUrl(link); // url.com -> http://url.com/ (adds http://) // http://url -> http://url.com/ (adds .com) // https://url -> https://url.com/ (adds .com) // url -> http://www.url.com/ (adds http://www. and .com) // http://www.url.com -> http://www.url.com/ // https://url.com -> https://url.com/ // file://dir/to/file -> file://dir/to/file // data://dataline -> data://dataline // content://test -> content://test

En la convocatoria de actividades:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URLUtil.guessUrl(download_link))); if (intent.resolveActivity(getPackageManager()) != null) startActivity(intent);

Verifique el código guessUrl completo para más información.


Introducción básica:

https: // está usando ese código en el "código" para que nadie entre ellos pueda leerlo. Esto mantiene su información a salvo de los hackers.

http: // solo usa el propósito de compartir, no está protegido.

Acerca de su problema:
Diseño de XML:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.sridhar.sharedpreferences.MainActivity"> <LinearLayout android:orientation="horizontal" android:background="#228b22" android:layout_weight="1" android:layout_width="match_parent" android:layout_height="0dp"> <Button android:id="@+id/normal_search" android:text="secure Search" android:onClick="secure" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> <Button android:id="@+id/secure_search" android:text="Normal Search" android:onClick="normal" android:layout_weight="1" android:layout_width="0dp" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_weight="9" android:id="@+id/button_container" android:layout_width="match_parent" android:layout_height="0dp" android:orientation="horizontal"> <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> </LinearLayout>

Diseño de la actividad:

public class MainActivity extends Activity { //securely open the browser public String Url_secure="https://www..com"; //normal purpouse public String Url_normal="https://www..com"; WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView=(WebView)findViewById(R.id.webView1); } public void secure(View view){ webView.setWebViewClient(new SecureSearch()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(Url_secure); } public void normal(View view){ webView.setWebViewClient(new NormalSearch()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(Url_normal); } public class SecureSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String Url_secure) { view.loadUrl(Url_secure); return true; } } public class NormalSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String Url_normal) { view.loadUrl(Url_normal); return true; } } }

Permisos de Android Manifest.Xml :

<uses-permission android:name="android.permission.INTERNET"/>

Te enfrentas a problemas al implementar esto:

  1. obteniendo los permisos del manifiesto
  2. el exceso de espacio está entre la url
  3. Revisa tu url correcto o no

Simple, la vista del sitio web a través de la intención,

Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.yoursite.in")); startActivity(viewIntent);

Utilice este código simple para ver su sitio web en la aplicación de Android.

Añadir permiso de internet en el archivo de manifiesto,

<uses-permission android:name="android.permission.INTERNET" />


otra opción en la URL de carga en la misma aplicación usando Webview

webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com");


Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink)); startActivity(getWebPage);


String url = "http://www.example.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i);