<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>android &#8211; danisanchez.net</title>
	<atom:link href="https://danisanchez.net/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>https://danisanchez.net</link>
	<description></description>
	<lastBuildDate>Wed, 08 Apr 2020 07:17:57 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://danisanchez.net/wp-content/uploads/2026/07/cropped-favicon-32x32.png</url>
	<title>android &#8211; danisanchez.net</title>
	<link>https://danisanchez.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Android Studio en Debian 10 Buster y derivadas (no snap ni flatpak)</title>
		<link>https://danisanchez.net/android-studio-en-debian-10-buster-y-derivadas-no-snap-ni-flatpak/</link>
					<comments>https://danisanchez.net/android-studio-en-debian-10-buster-y-derivadas-no-snap-ni-flatpak/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Wed, 08 Apr 2020 07:17:57 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[linux]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=6568</guid>

					<description><![CDATA[Android Studio está disponible en las principales distribuciones GNU/Linux como paquete snap y flatpak. Esta paquetería ya integra todas las librerías necesarias para que Android Studio se ejecute y funcione. No obstante, es posible realizar la instalación del paquete oficial para aquellos a los que no acaba de convencerles este tipo de paquetería. En este [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Android Studio</strong> está disponible en las principales distribuciones GNU/Linux como paquete snap y flatpak. Esta paquetería ya integra todas las librerías necesarias para que Android Studio se ejecute y funcione.</p>



<p class="wp-block-paragraph">No obstante, es posible realizar la instalación del paquete oficial para aquellos a los que no acaba de convencerles este tipo de paquetería.</p>



<p class="wp-block-paragraph">En este artículo veremos cómo hacer la instalación en <strong>Debian 10 Buster</strong>, aunque seguramente funcionará en todas sus distros «hijas» (Ubuntu, Mint&#8230;).</p>



<p class="wp-block-paragraph">Primero vamos a preparar el sistema con todo lo necesario para que Android Studio funcione.</p>



<h3 class="wp-block-heading">Instalar Java en su última versión</h3>



<pre class="wp-block-code"><code>sudo apt install openjdk-11-jre</code></pre>



<h3 class="wp-block-heading">Habilitar la arquitectura 32 bits para sistemas de 64 bits</h3>



<pre class="wp-block-code"><code>sudo dpkg --add-architecture i386
apt update</code></pre>



<h3 class="wp-block-heading">Instalar las siguientes librerías para sistemas de 64 bits</h3>



<pre class="wp-block-code"><code>sudo apt install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386</code></pre>



<h3 class="wp-block-heading">Descargar Android Studio</h3>



<p class="wp-block-paragraph">Desde la web oficial, descargamos la última versión de Android Studio:</p>



<p class="wp-block-paragraph"><a href="https://developer.android.com/studio?hl=es-419" target="_blank" rel="noreferrer noopener">https://developer.android.com/studio?hl=es-419</a></p>



<p class="wp-block-paragraph"> Una vez descargada la descomprimimos y movemos al directorio <strong>/opt</strong></p>



<pre class="wp-block-code"><code>sudo cp -R android-studio /opt</code></pre>



<h3 class="wp-block-heading">Ejecutar la instalación</h3>



<p class="wp-block-paragraph">Navega hasta la ruta:</p>



<pre class="wp-block-code"><code>cd /opt/android-studio/bin/</code></pre>



<p class="wp-block-paragraph">Y ejecuta el instalador</p>



<pre class="wp-block-code"><code>sudo ./studio.sh</code></pre>



<p class="wp-block-paragraph">Y seguir las instrucciones (instalación guiada).</p>



<h3 class="wp-block-heading">Crear un lanzador en nuestro menú de aplicaciones</h3>



<p class="wp-block-paragraph">Podemos lanzar cómodamente Android Studio desde nuestro menú de aplicaciones, creando el lanzador desde la pantalla de inicio, haciendo clic en <strong>Configure</strong> y <strong>Create Desktop Entry</strong>.</p>



<figure class="wp-block-image size-large"><img decoding="async" src="https://danisanchez.net/wp-content/uploads/2020/04/01-crear-lanzador-1-1024x800.jpg" alt="" class="wp-image-6569"/></figure>



<p class="wp-block-paragraph">Así ya estará disponible desde nuestro menú de aplicaciones o lanzador habitual:</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="567" height="438" src="https://danisanchez.net/wp-content/uploads/2020/04/02-lanzador-en-menu.jpg" alt="" class="wp-image-6570" srcset="https://danisanchez.net/wp-content/uploads/2020/04/02-lanzador-en-menu.jpg 567w, https://danisanchez.net/wp-content/uploads/2020/04/02-lanzador-en-menu-300x232.jpg 300w" sizes="(max-width: 567px) 100vw, 567px" /></figure>



<p class="wp-block-paragraph">Y a disfrutar. Nos vemos en el siguiente post <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/android-studio-en-debian-10-buster-y-derivadas-no-snap-ni-flatpak/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>Crear un WebView con Android Studio para cargar una web en una APP Android</title>
		<link>https://danisanchez.net/crear-webview-con-android-studio-para-cargar-una-web-en-una-app-android/</link>
					<comments>https://danisanchez.net/crear-webview-con-android-studio-para-cargar-una-web-en-una-app-android/#comments</comments>
		
		<dc:creator><![CDATA[dani.sanchez]]></dc:creator>
		<pubDate>Tue, 15 Jan 2019 08:00:35 +0000</pubDate>
				<category><![CDATA[Publicaciones]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[publicaciones]]></category>
		<category><![CDATA[tutoriales]]></category>
		<guid isPermaLink="false">https://www.gestionatuweb.net/?p=4477</guid>

					<description><![CDATA[AVISO: Este artículo tiene más de 2 años. La metodología y los códigos expuestos funcionaban entonces. Durante este tiempo, Google ha restringido mucho el uso del WebView en sus aplicaciones para Android, por lo que muchas de las técnicas que se ven en este artículo puede que ya no funcionen. Es por ello que este [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-white-color has-vivid-red-background-color has-text-color has-background wp-block-paragraph"><strong>AVISO</strong>: Este artículo tiene <strong>más de 2 años</strong>. La metodología y los códigos expuestos funcionaban entonces. Durante este tiempo, <strong>Google ha restringido mucho el uso del WebView</strong> en sus aplicaciones para Android, por lo que muchas de las técnicas que se ven en este artículo <strong>puede que ya no funcionen</strong>. Es por ello que este artículo queda como <strong>práctica teórica</strong>, en lugar de una solución para producción real.</p>



<p class="wp-block-paragraph">Si has desarrollado una página web <em>responsive</em> (que se adapta correctamente a dispositivos móviles), puedes aprovecharla para crear una <em>Aplicación Android</em> que cargue tu sitio web y contar con otro medio de difusión más para tu proyecto.</p>



<p class="wp-block-paragraph">Aunque las <em>Aplicaciones Web</em> no aprovechan las capacidades de un smartphone o tablet del mismo modo que una <em>APP nativa</em>, pueden ser útiles para lanzar una versión <em>APP móvil</em> de tu tienda online, o catálogo de productos para enseñar a tus clientes, o&nbsp; un sistema de reservas para tu restaurante o para alquilar tus inmuebles. Hay múltiples sectores en los que sería aprovechable, y al usar un recurso que ya tienes creado (tu web) supone un ahorro importante al no tener que realizar un desarrollo desde cero para la APP.</p>



<p class="wp-block-paragraph">Para crear tu <em>Web APP</em> necesitarás instalar el kit de desarrollo para aplicaciones <em>Android Studio</em> de Google.</p>



<p class="wp-block-paragraph">Puedes descargarlo para tu sistema operativo desde la web: <a href="https://developer.android.com/studio/?hl=es-419" target="_blank" rel="noreferrer noopener">https://developer.android.com/studio/?hl=es-419</a></p>



<p class="wp-block-paragraph">Desde sistemas GNU/Linux, es muy problable que lo encuentres en los repositorios de tu distribución o como <strong>paquete snap</strong>.</p>



<p class="wp-block-paragraph">Una vez instalado, antes de crear la aplicación, vamos a descargar algunos SDK sobre los que trabajar. Para ello hacemos clic en el botón <strong>Configure -&gt; SDK Manager</strong>:</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" width="801" height="724" src="https://danisanchez.net/wp-content/uploads/2019/01/20-bajar-sdk.jpg" alt="" class="wp-image-4503" srcset="https://danisanchez.net/wp-content/uploads/2019/01/20-bajar-sdk.jpg 801w, https://danisanchez.net/wp-content/uploads/2019/01/20-bajar-sdk-300x271.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/20-bajar-sdk-768x694.jpg 768w" sizes="(max-width: 801px) 100vw, 801px" /></figure></div>



<p class="wp-block-paragraph">A continuación seleccionamos los SDKs que nos interese para nuestras aplicaciones. Algunas funciones o métodos pueden variar según lanzan nuevas versiones de Android, por ello,&nbsp; para desarrollar nuestra APP podemos elegir algunos SDKs sobre los que implementarla. Para nuestro WebView, vamos a partir desde Android 4.4 KitKat, que funcionará según Android Studio, en el 95% de los dispositivos Android de hoy en día.</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" width="900" height="605" src="https://danisanchez.net/wp-content/uploads/2019/01/001-descargar-sdk.jpg" alt="" class="wp-image-4480" srcset="https://danisanchez.net/wp-content/uploads/2019/01/001-descargar-sdk.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/001-descargar-sdk-300x202.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/001-descargar-sdk-768x516.jpg 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Yo por ejemplo, tengo descargados los SDK de KitKat (4.4 API 19), Lollipop (5.1 API 22), Nougat (7.1.1 API 25) y Pie (9.0 API 28) que viene por defecto.</p>



<p class="wp-block-paragraph">Una vez descargados creamos un nuevo proyecto:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="777" height="501" src="https://danisanchez.net/wp-content/uploads/2019/01/002-empezar-proyecto.jpg" alt="" class="wp-image-4481" srcset="https://danisanchez.net/wp-content/uploads/2019/01/002-empezar-proyecto.jpg 777w, https://danisanchez.net/wp-content/uploads/2019/01/002-empezar-proyecto-300x193.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/002-empezar-proyecto-768x495.jpg 768w" sizes="auto, (max-width: 777px) 100vw, 777px" /></figure></div>



<p class="wp-block-paragraph">Primero nos pedirá dar un nombre a la aplicación:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="678" src="https://danisanchez.net/wp-content/uploads/2019/01/003-nombrar-aplicacion.jpg" alt="" class="wp-image-4483" srcset="https://danisanchez.net/wp-content/uploads/2019/01/003-nombrar-aplicacion.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/003-nombrar-aplicacion-300x226.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/003-nombrar-aplicacion-768x579.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">A continuación debemos seleccionar la API que se considera mínima para hacer funcionar la aplicación. Lo recomandable, para llegar al mayor número de dispositivos posibles, es seleccionar una API baja, si nuestra APP no va tener métodos o funcionalidades que solo se encuentran en APIs recientes.</p>



<p class="wp-block-paragraph">Para nuestro WebView vamos a partir de la API 19, correspondiente a la versión Android 4.4 KitKat, que según Android Studio, funcionará en más del 95% de los dispositivos Android de hoy en día.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="678" src="https://danisanchez.net/wp-content/uploads/2019/01/004-seleccionar-api.jpg" alt="" class="wp-image-4484" srcset="https://danisanchez.net/wp-content/uploads/2019/01/004-seleccionar-api.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/004-seleccionar-api-300x226.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/004-seleccionar-api-768x579.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">En la siguiente pantalla vamos a seleccionar una Actividad Vacía (Empty Activity). Las actividades son como las pantallas de la aplicación (o las páginas de una web). En nuestra aplicación solo vamos a tener una Actividad con el componente WebView que cargará nuestro sitio web:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="678" src="https://danisanchez.net/wp-content/uploads/2019/01/005-actividad-vacia.jpg" alt="" class="wp-image-4485" srcset="https://danisanchez.net/wp-content/uploads/2019/01/005-actividad-vacia.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/005-actividad-vacia-300x226.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/005-actividad-vacia-768x579.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Damos un nombre a nuestra actividad, por ejemplo, Principal:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="678" src="https://danisanchez.net/wp-content/uploads/2019/01/006-nombre-actividad.jpg" alt="" class="wp-image-4486" srcset="https://danisanchez.net/wp-content/uploads/2019/01/006-nombre-actividad.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/006-nombre-actividad-300x226.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/006-nombre-actividad-768x579.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Finalizamos y esperamos unos segundos a que se cargue toda la interfaz. Es posible que durante la carga aparezcan algunos mensajes de error. No te preocupes, desaparecerán cuando se haya cargado todo el entorno de desarrollo.</p>



<p class="wp-block-paragraph">La interfaz principal nos muestra dos archivos principales, el layout <strong><em>activity_principal.xml</em></strong> y la clase <strong><em>Principal.java</em></strong>. Sin pretender hacer un manual de Android Studio o de desarrollo de aplicaciones móviles, resumidamente podríamos decir que el Layout (XML) es donde se crean los elementos de la interfaz de la aplicación (textos, imágenes, botones&#8230;), y las Clases (java) donde se programa la funcionalidad de esos elementos.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="594" src="https://danisanchez.net/wp-content/uploads/2019/01/007-interfaz-principal.jpg" alt="" class="wp-image-4487" srcset="https://danisanchez.net/wp-content/uploads/2019/01/007-interfaz-principal.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/007-interfaz-principal-300x198.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/007-interfaz-principal-768x507.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Para añadir nuestro WebView, abrimos la pestaña <strong>activity_principal.xml </strong>y desde la Paleta de Elementos, arrastramos un Widget de WebView hacia la interfaz de la aplicación:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="508" src="https://danisanchez.net/wp-content/uploads/2019/01/008-arrastrar-webview.jpg" alt="" class="wp-image-4490" srcset="https://danisanchez.net/wp-content/uploads/2019/01/008-arrastrar-webview.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/008-arrastrar-webview-300x169.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/008-arrastrar-webview-768x433.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">En las propiedades de WebView (a la derecha), damos un identificador (ID), por ejemplo <strong>visorWeb</strong> (si vas a utilizar el código de este ejemplo para tu aplicación, utiliza también el mismo identificador):</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="507" src="https://danisanchez.net/wp-content/uploads/2019/01/009-id-visor-web.jpg" alt="" class="wp-image-4491" srcset="https://danisanchez.net/wp-content/uploads/2019/01/009-id-visor-web.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/009-id-visor-web-300x169.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/009-id-visor-web-768x433.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Ahora vamos ajustar el ancho y alto del WebView para que ocupe el máximo de la pantalla del dispositivo en el que se visualice. Para ello hay que definir el <strong>layout_width</strong> y el <strong>layout_height</strong> en «<strong>fill_parent</strong>«:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="509" src="https://danisanchez.net/wp-content/uploads/2019/01/010.-layout-width.jpg" alt="" class="wp-image-4492" srcset="https://danisanchez.net/wp-content/uploads/2019/01/010.-layout-width.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/010.-layout-width-300x170.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/010.-layout-width-768x434.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="508" src="https://danisanchez.net/wp-content/uploads/2019/01/011-layout-height.jpg" alt="" class="wp-image-4493" srcset="https://danisanchez.net/wp-content/uploads/2019/01/011-layout-height.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/011-layout-height-300x169.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/011-layout-height-768x433.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Ahora pasamos a la pestaña Principal.java.</p>



<p class="wp-block-paragraph">Añadimos la siguiente línea para crear el componente WebView:</p>



<pre class="wp-block-preformatted">WebView miVisorWeb</pre>



<p class="wp-block-paragraph">Si el WebView se marca en color rojo, significa que hay que importar sus métodos y propiedades a la clase actual. Si pasas el ratón por encima del componente, Android Studio te sugerirá que lo importes pulsando Alt + Intro:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="504" src="https://danisanchez.net/wp-content/uploads/2019/01/012-webview-alt-intro.jpg" alt="" class="wp-image-4494" srcset="https://danisanchez.net/wp-content/uploads/2019/01/012-webview-alt-intro.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/012-webview-alt-intro-300x168.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/012-webview-alt-intro-768x430.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Al importar, se añadirá automáticamente la línea <strong>import android.webkit.WebView;</strong></p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="505" src="https://danisanchez.net/wp-content/uploads/2019/01/13-webview-import.jpg" alt="" class="wp-image-4495" srcset="https://danisanchez.net/wp-content/uploads/2019/01/13-webview-import.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/13-webview-import-300x168.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/13-webview-import-768x431.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Ahora definimos la URL de nuestro sitio web que se cargará en el WebView:</p>



<pre class="wp-block-code"><code>String url = &quot;https://danisanchez.net/&quot;;</code></pre>



<p class="wp-block-paragraph">Y dentro de la función onCreateBundle, añadimos las siguientes líneas:</p>



<pre class="wp-block-code"><code>miVisorWeb = (WebView) findViewById(R.id.visorWeb);
final WebSettings ajustesVisorWeb = miVisorWeb.getSettings();
ajustesVisorWeb.setJavaScriptEnabled(true);
miVisorWeb.loadUrl(url);</code></pre>



<p class="wp-block-paragraph"><em>miVisorWeb = (WebView) findViewById(R.id.visorWeb)</em> enlaza el componente WebView con el Widget de WebView que añadimos a la interfaz anteriormente a través de su identificador (ID)</p>



<p class="wp-block-paragraph">Además, habilitaremos el JavaScript para que los elementos JavaScript funcionen correctamente desde la APP.</p>



<p class="wp-block-paragraph">Y finalmente llamamos a cargar la url que definimos anteriormente: miVisorWeb.loadUrl(url);</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="505" src="https://danisanchez.net/wp-content/uploads/2019/01/14-run-app.jpg" alt="" class="wp-image-4496" srcset="https://danisanchez.net/wp-content/uploads/2019/01/14-run-app.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/14-run-app-300x168.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/14-run-app-768x431.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Quedando el código de Principal.java de esta forma:</p>



<pre class="wp-block-code"><code>package net.gestionatuweb.miwebapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class Principal extends AppCompatActivity {
    WebView miVisorWeb;
    String url = &quot;https://danisanchez.net/&quot;;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        miVisorWeb = (WebView) findViewById(R.id.visorWeb);
        final WebSettings ajustesVisorWeb = miVisorWeb.getSettings();
        ajustesVisorWeb.setJavaScriptEnabled(true);
        miVisorWeb.loadUrl(url);
    }</code></pre>



<p class="wp-block-paragraph">A continuación tenemos que dar a nuestra aplicación permisos para acceder a Internet, de lo contrario no podrá cargar nuestro sitio web.</p>



<p class="wp-block-paragraph">Para ello tenemos que abrir el archivo Manifest que se encuentra en el árbol de archivos de nuestro proyecto <strong>app -&gt; manifests -&gt; AndroidManifest.xml&nbsp;</strong>y añadimos la siguiente línea:</p>



<pre class="wp-block-code"><code>&lt;uses-permission android:name="android.permission.INTERNET"/&gt;</code></pre>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="505" src="https://danisanchez.net/wp-content/uploads/2019/01/17-uses-perission-internet.jpg" alt="" class="wp-image-4497" srcset="https://danisanchez.net/wp-content/uploads/2019/01/17-uses-perission-internet.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/17-uses-perission-internet-300x168.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/17-uses-perission-internet-768x431.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Para probar nuestra APP, podemos ir al menú <strong>RUN &#8211; &#8216;Run app&#8217;</strong>.</p>



<p class="wp-block-paragraph">Hay dos métodos para probar nuestra aplicación. La primera es utilizar un dispositivo Android real, por ejemplo tu smartphone o tablet. Para que este sea reconocido por Android Studio, tendrás que conectarlo por usb al PC y tener en tu smartphone o tablet el modo de <em>Depuración USB Habilitada.</em> Si todo está bien será reconocido en la siguiente pantalla en <em>Connected Devides</em>:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="624" height="490" src="https://danisanchez.net/wp-content/uploads/2019/01/15-crear-dispositivo-virtual.jpg" alt="" class="wp-image-4498" srcset="https://danisanchez.net/wp-content/uploads/2019/01/15-crear-dispositivo-virtual.jpg 624w, https://danisanchez.net/wp-content/uploads/2019/01/15-crear-dispositivo-virtual-300x236.jpg 300w" sizes="auto, (max-width: 624px) 100vw, 624px" /></figure></div>



<p class="wp-block-paragraph">O podemos crear un dispositivo virtual haciendo clic en <strong>Create New Virtual Device.</strong></p>



<p class="wp-block-paragraph">Android Studio nos propone una serie de dispositivos ya preconfigurados, solo tenemos que seleccionar uno de ellos y esperar a que se descargue y configure el nuevo dispositivo:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="610" src="https://danisanchez.net/wp-content/uploads/2019/01/16-seleccionar-dispositivo-virtual.jpg" alt="" class="wp-image-4499" srcset="https://danisanchez.net/wp-content/uploads/2019/01/16-seleccionar-dispositivo-virtual.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/16-seleccionar-dispositivo-virtual-300x203.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/16-seleccionar-dispositivo-virtual-768x521.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Ahora abrimos nuestro nuevo dispositivo y comprobamos que la web cargue correctamente:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="552" src="https://danisanchez.net/wp-content/uploads/2019/01/18-probar-app-virtual.jpg" alt="" class="wp-image-4500" srcset="https://danisanchez.net/wp-content/uploads/2019/01/18-probar-app-virtual.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/18-probar-app-virtual-300x184.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/18-probar-app-virtual-768x471.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Nos encontramos con el problema de que el botón «Atrás» de nuestro dispositivo, cierra la aplicación en lugar de volver a una página anterior de nuestro sitio web. Esto ocurre porque el botón «Atrás», no detecta que se esté navegando a través de una página web, si no que intenta ir a una actividad anterior de nuestra aplicación y como solamente tenemos una actividad creada, el siguiente paso hacía atrás consiste en cerrarla.</p>



<p class="wp-block-paragraph">Para controlar esto podemos añadir el siguiente código dentro del archivo <strong>Principal.java</strong>:</p>



<pre class="wp-block-code"><code>//Impedir que el botón Atrás cierre la aplicación
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        WebView miVisorWeb;
        miVisorWeb = (WebView) findViewById(R.id.visorWeb);
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (miVisorWeb.canGoBack()) {
                        miVisorWeb.goBack();
                    } else {
                        finish();
                    }
                    return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }</code></pre>



<p class="wp-block-paragraph">Os dejo el código completo del archivo <strong>Principal.java</strong> por si queréis copiarlo íntegro para vuestras pruebas:</p>



<pre class="wp-block-code"><code>package net.gestionatuweb.miwebapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class Principal extends AppCompatActivity {
    WebView miVisorWeb;
    String url = &quot;https://danisanchez.net/&quot;;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        miVisorWeb = (WebView) findViewById(R.id.visorWeb);
        final WebSettings ajustesVisorWeb = miVisorWeb.getSettings();
        ajustesVisorWeb.setJavaScriptEnabled(true);
        miVisorWeb.loadUrl(url);
    }
    //Impedir que el botón Atrás cierre la aplicación
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        WebView miVisorWeb;
        miVisorWeb = (WebView) findViewById(R.id.visorWeb);
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (miVisorWeb.canGoBack()) {
                        miVisorWeb.goBack();
                    } else {
                        finish();
                    }
                    return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}</code></pre>



<p class="wp-block-paragraph">Ya solo nos queda definir un icono a nuestra APP y generar el .apk final para poder instalarlo en cualquier dispositivo Android o subirlo a la Play Store.</p>



<p class="wp-block-paragraph">Para generar el icono de nuestra aplicación, crearemos una nueva Image Asset, posicionándonos sobre el directorio mipmap del proyecto, botón derecho y New Image Asset.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="578" src="https://danisanchez.net/wp-content/uploads/2019/01/20-imagen-asset.jpg" alt="" class="wp-image-4508" srcset="https://danisanchez.net/wp-content/uploads/2019/01/20-imagen-asset.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/20-imagen-asset-300x193.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/20-imagen-asset-768x493.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Veremos la pantalla del icono por defecto en todas sus versiones. Para agilizar el trabajo, podemos simplemente reemplazar la imagen por defecto por la imagen que hayamos preparado para nuestro icono en el campo Path:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="625" src="https://danisanchez.net/wp-content/uploads/2019/01/21-seleccion-nuevo-icono.jpg" alt="" class="wp-image-4507" srcset="https://danisanchez.net/wp-content/uploads/2019/01/21-seleccion-nuevo-icono.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/21-seleccion-nuevo-icono-300x208.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/21-seleccion-nuevo-icono-768x533.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Localizamos la nueva imagen en nuestro PC:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="502" height="519" src="https://danisanchez.net/wp-content/uploads/2019/01/22-seleccionar-nueva-imagen-para-icono.jpg" alt="" class="wp-image-4509" srcset="https://danisanchez.net/wp-content/uploads/2019/01/22-seleccionar-nueva-imagen-para-icono.jpg 502w, https://danisanchez.net/wp-content/uploads/2019/01/22-seleccionar-nueva-imagen-para-icono-290x300.jpg 290w" sizes="auto, (max-width: 502px) 100vw, 502px" /></figure></div>



<p class="wp-block-paragraph">Podemos usar la barra resize para encajar nuestro nuevo icono en todas las variantes:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="504" src="https://danisanchez.net/wp-content/uploads/2019/01/23-redimensionar-icono.jpg" alt="" class="wp-image-4510" srcset="https://danisanchez.net/wp-content/uploads/2019/01/23-redimensionar-icono.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/23-redimensionar-icono-300x168.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/23-redimensionar-icono-768x430.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">En la pestaña Background Layer podemos ajustar el fondo. Para el ejemplo usaremos el color blanco.</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="625" src="https://danisanchez.net/wp-content/uploads/2019/01/24-fondo-icono.jpg" alt="" class="wp-image-4512" srcset="https://danisanchez.net/wp-content/uploads/2019/01/24-fondo-icono.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/24-fondo-icono-300x208.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/24-fondo-icono-768x533.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Ya solamente queda generar la APK.</p>



<p class="wp-block-paragraph">Para ello tenemos dos opciones, generar una APK sencilla lista para instalar en cualquier dispositivo manualmente, o crear una APK firmada para el caso en que queramos publicarla en Google Play.</p>



<ul class="wp-block-list"><li><strong>Generar la APK simple:&nbsp;</strong>Nos dirimos al menú Build &#8211; Build Bundle(s) / APK/s) &#8211; Buid APK(s):</li></ul>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="900" height="505" src="https://danisanchez.net/wp-content/uploads/2019/01/26-apk-sin-firmar-creada.jpg" alt="" class="wp-image-4517" srcset="https://danisanchez.net/wp-content/uploads/2019/01/26-apk-sin-firmar-creada.jpg 900w, https://danisanchez.net/wp-content/uploads/2019/01/26-apk-sin-firmar-creada-300x168.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/26-apk-sin-firmar-creada-768x431.jpg 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure></div>



<p class="wp-block-paragraph">Una vez construida la APK aparecerá el mensaje donde podremos localizarla haciendo clic en «locate», pero si el mensaje desaparece, la APK generalmente se guardará en la ruta de tu proyecto: <strong>TuAplicacion / app / build / outputs / apk / debug </strong></p>



<ul class="wp-block-list"><li><strong>Generar la APK firmada: </strong>Nos dirigimos al menú Build &#8211; Generate Signed Bundle or APK y escogemos la opción <strong>Android App Bundle.</strong></li></ul>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="626" height="374" src="https://danisanchez.net/wp-content/uploads/2019/01/29-generar-apk-firmada.jpg" alt="" class="wp-image-4513" srcset="https://danisanchez.net/wp-content/uploads/2019/01/29-generar-apk-firmada.jpg 626w, https://danisanchez.net/wp-content/uploads/2019/01/29-generar-apk-firmada-300x179.jpg 300w" sizes="auto, (max-width: 626px) 100vw, 626px" /></figure></div>



<p class="wp-block-paragraph">Ahora nos pedirá que seleccionemos un certificado o firma digital para la aplicación:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="716" height="374" src="https://danisanchez.net/wp-content/uploads/2019/01/30-indicar-certificado.jpg" alt="" class="wp-image-4514" srcset="https://danisanchez.net/wp-content/uploads/2019/01/30-indicar-certificado.jpg 716w, https://danisanchez.net/wp-content/uploads/2019/01/30-indicar-certificado-300x157.jpg 300w" sizes="auto, (max-width: 716px) 100vw, 716px" /></figure></div>



<p class="wp-block-paragraph">Si es la primera vez que hacemos este paso en Android Studio, tendremos que crear una firma digital para nuestra aplicación. Esta firma nos reconoce a nosotros como autores legítimos de la aplicación y es necesaria para poder publicar en Google Play:</p>



<div class="wp-block-image"><figure class="aligncenter"><img loading="lazy" decoding="async" width="539" height="538" src="https://danisanchez.net/wp-content/uploads/2019/01/31-crear-certificado.jpg" alt="" class="wp-image-4515" srcset="https://danisanchez.net/wp-content/uploads/2019/01/31-crear-certificado.jpg 539w, https://danisanchez.net/wp-content/uploads/2019/01/31-crear-certificado-300x300.jpg 300w, https://danisanchez.net/wp-content/uploads/2019/01/31-crear-certificado-150x150.jpg 150w" sizes="auto, (max-width: 539px) 100vw, 539px" /></figure></div>



<p class="wp-block-paragraph">Rellenamos los datos para el certificado y finalizamos.</p>



<p class="wp-block-paragraph">Podríamos extendernos mucho más sobre el tema, pero creo que lo esencial está explicado y es suficiente para empezar (y llevamos casi 1500 palabras de artículo!).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://danisanchez.net/crear-webview-con-android-studio-para-cargar-una-web-en-una-app-android/feed/</wfw:commentRss>
			<slash:comments>71</slash:comments>
		
		
			</item>
	</channel>
</rss>
