{"id":1566,"date":"2018-09-26T12:11:58","date_gmt":"2018-09-26T17:11:58","guid":{"rendered":"http:\/\/naps.com.mx\/blog\/?p=1566"},"modified":"2018-10-04T10:23:22","modified_gmt":"2018-10-04T15:23:22","slug":"intent-que-abre-una-url-en-android","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/intent-que-abre-una-url-en-android\/","title":{"rendered":"Intent que abre una URL en Android"},"content":{"rendered":"<p><em><strong>Realizaremos un intent que abre una URL escrita por el usuario en una caja de texto en el navegador predeterminado por el sistema.<\/strong><\/em><\/p>\n<p><!--more--><\/p>\n<h2>Intent que abre una URL<\/h2>\n<p>Un <em><strong>intent<\/strong><\/em> que abre una URL en Android es un intent impl\u00edcito.\u00a0Un<strong> intent impl\u00edcito<\/strong> es una acci\u00f3n que invoca cualquier aplicaci\u00f3n que el dispositivo puede utilizar para realizar una determinada funci\u00f3n. Por ejemplo, no es necesario crear un navegador para abrir una URL, en vista de que Android tiene ya una aplicaci\u00f3n que hace esa funci\u00f3n. En vez de eso, podemos enviar la orden de abrir una URL y pasarle la URL que deseamos abrir.<\/p>\n<p>Los siguientes pasos se realizan sobre un proyecto que empezamos en un <a href=\"http:\/\/naps.com.mx\/blog\/intent-implicito-llamada-telefonica\/\">art\u00edculo anterior<\/a>.<\/p>\n<p><strong>Paso 1<\/strong>. Vamos a agregar un <em><strong>EditText<\/strong><\/em> y un <em><strong>ImageButton<\/strong><\/em> a nuestra aplicaci\u00f3n<\/p>\n<pre class=\"lang:xhtml decode:true \">    &lt;EditText\r\n        android:id=\"@+id\/editTextWeb\"\r\n        android:layout_width=\"217dp\"\r\n        android:layout_height=\"47dp\"\r\n        android:layout_marginEnd=\"8dp\"\r\n        android:layout_marginStart=\"48dp\"\r\n        android:ems=\"10\"\r\n        android:inputType=\"text\"\r\n        android:text=\"\"\r\n        app:layout_constraintEnd_toStartOf=\"@+id\/imageButtonWeb\"\r\n        app:layout_constraintStart_toStartOf=\"parent\"\r\n        app:layout_constraintTop_toTopOf=\"@+id\/imageButtonWeb\" \/&gt;\r\n\r\n    &lt;ImageButton\r\n        android:id=\"@+id\/imageButtonWeb\"\r\n        android:layout_width=\"30dp\"\r\n        android:layout_height=\"45dp\"\r\n        android:layout_marginBottom=\"362dp\"\r\n        android:layout_marginEnd=\"54dp\"\r\n        android:background=\"@android:color\/transparent\"\r\n        android:src=\"@drawable\/eye\"\r\n        app:layout_constraintBottom_toTopOf=\"@+id\/imageButtonCamera\"\r\n        app:layout_constraintEnd_toEndOf=\"parent\"\r\n        app:layout_constraintStart_toEndOf=\"@+id\/editTextWeb\"\r\n        app:layout_constraintTop_toBottomOf=\"@+id\/imageButtonPhone\" \/&gt;\r\n<\/pre>\n<p>Notamos que el <em><strong>EditText<\/strong><\/em> utiliza el id <em><strong>editTextWeb<\/strong><\/em>, y es de tipo <em><strong>Text<\/strong><\/em>.<\/p>\n<p>El <em><strong>ImageButton<\/strong><\/em> tiene un <em><strong>id<\/strong><\/em> llamado <em><strong>imageButtonWeb<\/strong><\/em> y est\u00e1 asociado a una imagen llamada eye, misma que est\u00e1 en la carpeta drawable bajo el nombre <em><strong>eye.png<\/strong><\/em>.<\/p>\n<p>Nuestro dise\u00f1o se ver\u00e1 as\u00ed:<\/p>\n<div id=\"attachment_1568\" style=\"width: 514px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2018\/09\/VistaURL.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1568\" class=\"wp-image-1568 size-full\" title=\"intent que abre URL\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2018\/09\/VistaURL.jpeg\" alt=\"Intent que abre URL\" width=\"504\" height=\"854\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2018\/09\/VistaURL.jpeg 504w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2018\/09\/VistaURL-177x300.jpeg 177w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/a><p id=\"caption-attachment-1568\" class=\"wp-caption-text\">Interfaz para el Intent que abre URL<\/p><\/div>\n<p><strong>Paso 2<\/strong>. Crear objetos y asociarlos<\/p>\n<p>En nuestro c\u00f3digo Java (ThirdActivity.java), creamos objetos que asociaremos a los elementos XML que acabamos de a\u00f1adir.<\/p>\n<pre class=\"lang:java decode:true \">private EditText editTextWeb;\r\nprivate ImageButton imgBtnWeb;\r\n<\/pre>\n<p>Y los asociamos:<\/p>\n<pre class=\"lang:java decode:true \">editTextWeb = (EditText) findViewById(R.id.editTextWeb);\r\nimgBtnWeb = (ImageButton) findViewById(R.id.imageButtonWeb);\r\n<\/pre>\n<p><strong>Paso 3<\/strong>. Escribimos el evento onClick del ImageButton<\/p>\n<p>El c\u00f3digo relacionado al evento clic del <em><strong>ImageButton<\/strong><\/em> y que abre una URL es el siguiente:<\/p>\n<pre class=\"lang:java decode:true \">imgBtnWeb.setOnClickListener(new View.OnClickListener() {\r\n    @Override\r\n    public void onClick(View view) {\r\n        String url = editTextWeb.getText().toString();\r\n        if (url != null &amp;&amp; !url.isEmpty()){\r\n            Intent intentWeb = new Intent();\r\n            intentWeb.setAction(Intent.ACTION_VIEW);\r\n            intentWeb.setData(Uri.parse(\"http:\/\/\"+url));\r\n            startActivity(intentWeb);\r\n        }\r\n     }\r\n});\r\n<\/pre>\n<p>Este c\u00f3digo extrae el contenido de la URL (<em><strong>String url = editTextWeb.getText().toString();<\/strong><\/em>), verifica que el usuario haya escrito algo en \u00e9l (if (<em><strong>url != null &amp;&amp; !url.isEmpty())<\/strong><\/em>), crea un <em><strong>Intent<\/strong><\/em>, le pasa la URL escrita, e inicia el <em><strong>Intent<\/strong><\/em>.<\/p>\n<p>Una Acci\u00f3n (<em><strong>Action<\/strong><\/em>) es un <em><strong>String<\/strong><\/em> que especifica la acci\u00f3n que se va a realizar. <em><strong>ACTION_VIEW<\/strong><\/em> es una acci\u00f3n com\u00fan que indica a la activity que tenemos informaci\u00f3n para mostrar al usuario, en nuestro caso una \u00a0direcci\u00f3n web.<\/p>\n<p>Si deseas ver el resultado est\u00e1 <a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2018\/09\/intenturl.gif\">aqu\u00ed<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<h3>Referencias<\/h3>\n<ol>\n<li><strong>Android.com (2018)<\/strong>. <a href=\"https:\/\/developer.android.com\/guide\/components\/intents-filters?hl=es-419\"><strong>Intents y filtros de intents<\/strong><\/a>. Disponible en [https:\/\/developer.android.com\/guide\/components\/intents-filters?hl=es-419]<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Realizaremos un intent que abre una URL escrita por el usuario en una caja de texto en el navegador predeterminado por el sistema.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[234],"tags":[198,235,237],"class_list":["post-1566","post","type-post","status-publish","format-standard","hentry","category-aplicaciones-moviles","tag-android","tag-desarrollo-de-aplicaciones-moviles","tag-intents"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=1566"}],"version-history":[{"count":8,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1566\/revisions"}],"predecessor-version":[{"id":1598,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1566\/revisions\/1598"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=1566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=1566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=1566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}