Crear un WebView con Android Studio para cargar una web en una APP Android

Comparte este post

Aviso importante

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 artículo queda como práctica teórica, en lugar de una solución para producción real.

Si has desarrollado una página web responsive (que se adapta correctamente a dispositivos móviles), puedes aprovecharla para crear una Aplicación Android que cargue tu sitio web y contar con otro medio de difusión más para tu proyecto.

Aunque las Aplicaciones Web no aprovechan las capacidades de un smartphone o tablet del mismo modo que una APP nativa, pueden ser útiles para lanzar una versión APP móvil de tu tienda online, o catálogo de productos para enseñar a tus clientes, o  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.

Para crear tu Web APP necesitarás instalar el kit de desarrollo para aplicaciones Android Studio de Google.

Puedes descargarlo para tu sistema operativo desde la web: https://developer.android.com/studio/?hl=es-419

Desde sistemas GNU/Linux, es muy problable que lo encuentres en los repositorios de tu distribución o como paquete snap.

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 Configure -> SDK Manager:

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,  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.

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.

Una vez descargados creamos un nuevo proyecto:

Primero nos pedirá dar un nombre a la aplicación:

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.

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.

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:

Damos un nombre a nuestra actividad, por ejemplo, Principal:

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.

La interfaz principal nos muestra dos archivos principales, el layout activity_principal.xml y la clase Principal.java. 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…), y las Clases (java) donde se programa la funcionalidad de esos elementos.

Para añadir nuestro WebView, abrimos la pestaña activity_principal.xml y desde la Paleta de Elementos, arrastramos un Widget de WebView hacia la interfaz de la aplicación:

En las propiedades de WebView (a la derecha), damos un identificador (ID), por ejemplo visorWeb (si vas a utilizar el código de este ejemplo para tu aplicación, utiliza también el mismo identificador):

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 layout_width y el layout_height en “fill_parent“:

Ahora pasamos a la pestaña Principal.java.

Añadimos la siguiente línea para crear el componente WebView:

WebView miVisorWeb

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:

Al importar, se añadirá automáticamente la línea import android.webkit.WebView;

Ahora definimos la URL de nuestro sitio web que se cargará en el WebView:

String url = "https://www.gestionatuweb.net";

Y dentro de la función onCreateBundle, añadimos las siguientes líneas:

miVisorWeb = (WebView) findViewById(R.id.visorWeb);
final WebSettings ajustesVisorWeb = miVisorWeb.getSettings();
ajustesVisorWeb.setJavaScriptEnabled(true);
miVisorWeb.loadUrl(url);

miVisorWeb = (WebView) findViewById(R.id.visorWeb) enlaza el componente WebView con el Widget de WebView que añadimos a la interfaz anteriormente a través de su identificador (ID)

Además, habilitaremos el JavaScript para que los elementos JavaScript funcionen correctamente desde la APP.

Y finalmente llamamos a cargar la url que definimos anteriormente: miVisorWeb.loadUrl(url);

Quedando el código de Principal.java de esta forma:

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 = "https://www.gestionatuweb.net";
    @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);
    }

A continuación tenemos que dar a nuestra aplicación permisos para acceder a Internet, de lo contrario no podrá cargar nuestro sitio web.

Para ello tenemos que abrir el archivo Manifest que se encuentra en el árbol de archivos de nuestro proyecto app -> manifests -> AndroidManifest.xml y añadimos la siguiente línea:

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

Para probar nuestra APP, podemos ir al menú RUN – ‘Run app’.

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 Depuración USB Habilitada. Si todo está bien será reconocido en la siguiente pantalla en Connected Devides:

O podemos crear un dispositivo virtual haciendo clic en Create New Virtual Device.

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:

Ahora abrimos nuestro nuevo dispositivo y comprobamos que la web cargue correctamente:

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.

Para controlar esto podemos añadir el siguiente código dentro del archivo Principal.java:

//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);
    }

Os dejo el código completo del archivo Principal.java por si queréis copiarlo íntegro para vuestras pruebas:

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 = "https://www.gestionatuweb.net";
    @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);
    }
}

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.

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.

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:

Localizamos la nueva imagen en nuestro PC:

Podemos usar la barra resize para encajar nuestro nuevo icono en todas las variantes:

En la pestaña Background Layer podemos ajustar el fondo. Para el ejemplo usaremos el color blanco.

Ya solamente queda generar la APK.

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.

  • Generar la APK simple: Nos dirimos al menú Build – Build Bundle(s) / APK/s) – Buid APK(s):

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: TuAplicacion / app / build / outputs / apk / debug

  • Generar la APK firmada: Nos dirigimos al menú Build – Generate Signed Bundle or APK y escogemos la opción Android App Bundle.

Ahora nos pedirá que seleccionemos un certificado o firma digital para la aplicación:

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:

Rellenamos los datos para el certificado y finalizamos.

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!).

56 Comments

  • Alex Campos

    uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE” /

  • Alex Campos

    No me deja abrir la galaria desde la webview cuando doy click no pasa nada.
    Tampoco me deja grabar nada en un audio de voz.
    Es como que no tiene acceso a esos permisos le agregue esto.

    Pero aun asi no me deja. ayuda

  • Cati Noemi

    Hola, muy buen articulo me sirvió de mucho, pero tengo un problema realice un sistema y lo hice app web y mande la pagina a un web view pero tengo un problema con la descarga de archivos ya que en la aplicación no me descarga mis documentos, ya di los permisos de descarga en android pero no se cual sea el problema, me sería de ayuda saber si no se puede realizar esta acción n para poder crear la app nativa o si hay una solución

  • JORGE BAEZ

    Hola todo me quedo entendido , pero en cuanto alos permisos con solo el permiso podra tener conecxion a internet por red o wifi, pero si que permiso necesito si quiero que mi app permita guardar descargas de la misma web, ya que con el permiso anterior solo me permite navegar sobre la web pero si necesito guarda una imagen o archivo/ descargas no tine ninguna accion, que permisos son necesarios si quiero que solo se permita descargar

  • Tutorial muy sencillo y fácil de seguir.

  • Saludos Dani he seguido todos pasos y logre crear la app, pero tengo un problema y es que al abrir la app se carga sólo la página principal de la web, más no las demás secciones de web, al intentar abrir una sección la abre de forma externa desde el navegador del teléfono y más no las abre sin salir de la app.
    La otra duda, es que no tengo acceso al menú, es decir si intento dar clic en el menú no despliega nada, así como tampoco los iframe y efectos de movimientos.
    He leído un poco de los códigos que hay que colocar pero desconozco el sitio exacto para incluirlos. Será que puedes dar tu punto de vista sobre este caso.
    —————-
    Y como punto extra y quizás sirva de ayuda para la comunidad, hace una semana (2021) subí una apk a (google play) y me la aceptaron, hago referencia que está apk era una WebView.

    • A

      Lo siento, el código expuesto en el artículo funcionaba correctamente en el momento de escribirlo. En estos 2 años puede que haya habido cambios y restricciones que dificulten el uso de los WebViews.

  • Gracias por el tutorial , he creado la app sin problemas pero tengo un problema. Como puedo hacer para guardar unas credenciales de la web que accedo?

    mil gracias

  • Buenas tardes genere la aplicacion, la exporto e instalo en mi andorid, pero cuando doy en abrir la app esta carga es el navegador con la pagina web, y no carga propiamente como una aplicacion. Que debo hacer Gracias

  • Hola! Estoy tratando de generar una apk con un formulario para cargar archivos en el servidor mediante php. El problema es que en la pagina web funciona correctamente, pero cuando genero el archivo empaquetado no hace nada. Tengo solución a este problema utilizando Android Studio?

  • Y como puedo hacer en el caso de que quiera poner anuncios de admod, espero tu ayuda y saludos..

  • Hola buenas noches, soy novato en esto de las apps, y estoy haciendo este ejemplo, ya por fin me dio, pero no se por que a mi me salio barra de de direccion, alguien sabe como quitarlo?

  • Buen día

    Estoy presentando un problema, el inicio principal de la pagina pero si voy a alguna opción no me carga dentro de la misma app sino que me carga en uno explorador de internet, por favor ayudenme con eso

  • DANIEL, TE FALTARON ALGUNAS CARACTERISTICAS IMPORTANTES, PARA QUE QUEDE MAS PROFESIONAL Y ALGUNOS CONSEJOS PARA QUIENES NO PUEDEN SUBIRLA A LA PLAYSTORE:

    ● AGREGA ESTA LINEA, TE DA ACCESO A LAS ANIMACIONES Y TODO LO INTERACTIVO QUE TENGA TU WEB, LOS SCRIPT, ENTRE OTROS. HACE QUE SE VEA IGUAL A LA ORIGINAL.

    webSettings.setDomStorageEnabled(true);

    ● LOS BOTONES DE RETROCESO (SOLO AGREGALOS A TU CODIGO TE PERMITE REGRESAR SIN SALIR DE TU APP):

    @Override
    public void onBackPressed()
    {
    WebView webView = (WebView) findViewById(R.id.openmerqui);
    if(webView.canGoBack()){
    webView.goBack();
    }else{
    super.onBackPressed();
    }
    }

    ● QUITAR LA BARRA DE ARRIBA DE COLOR VERDE LA ACTIONBAR, PARA QUE LA APP SE VEA MAS ORIGINAL, ESTO SE HACE EN EL STYLE este es todo mi codigo style, para que no se confundan.


    @color/colorPrimary
    @color/colorPrimaryDark
    @color/colorAccent

    ● RESPECTO A LOS CONSEJOS DE LAS POLITYCAS DE PRIVACIDAD DE GOOGLE, RECOMIENDO CREAR UNA INTERFAZ PREVIA Y EN ELLA UN BOTON QUE CONDUZCA A LA WEBVIEW. es como si camuflaramos nuestra webview
    LA INTERFAZ SERA TU CARA DE PRESENTACION, CON POCOS RECURSOS SE PUEDEN LOGRAN VISTAS ESPECTACULARES.
    –CUANDO SUBAS TU APP NO COLOQUES IMAGENES DE MARCAS U OTROS SIN DERECHOS DE AUTOR, TRATA QUE TODA LA INFORMACION QUE PROPORCIONES A GOOGLE NO INVOLUCREN POLITICAS DE MENORES DE EDAD, TRATA DE DARLE POCA INFORMACION, SOLO LO NECESARIO.

    • Hola tengo un webapp y quiero integrarla con una app nativa se puede compartir sesión entre ambas? o sea logueo en la app via api y cuando abro el webview no me pida un nuevo logueo ?

    • A
      Daniel, Gestionatuweb.net

      Muy buena aportación y consejos. Un saludo.

  • Entre los recursos que forman parte de la enorme API de Android hay una que permite mostrar páginas web a través de una clase llamada WebView; con ayuda de la clase WebView podemos crear nuestro propio navegador y como podrás imaginarte utiliza el motor de WebKit.

  • Hola Daniel,
    he leído tu post y me parece genial porque precisamente busco algo parecido para hacer una APP a partir de una página web.
    Por otro lado, no te apures por el número de palabras, es bueno para el SEO.
    Repito, felicidades y muy bien explicado, cuando vaya a realizar mi proyecto si me surge alguna duda ya te informo.
    Un saludo.

  • Hola muchas gracias por tu aporte, me has ayudado muchísimo!! Una duda, cuando cargo la web me aparecen dos franjas blancas a los lados, cómo puedo hacer que ocupen todo el ancho de la pantalla?
    Gracias!

    • webSettings.setDomStorageEnabled(true);

      AGREGA ESTA LINEA, TE DA ACCESO A LAS ANIMACIONES Y TODO LO INTERACTIVO QUE TENGA TU WEB, LOS SCRIPT, ENTRE OTROS. HACE QUE SE VEA IGUAL A LA ORIGINAL.

      LOS BOTONES DE RETROCESO (SOLO AGREGALOS A TU CODIGO):

      @Override
      public void onBackPressed()
      {
      WebView webView = (WebView) findViewById(R.id.openmerqui);
      if(webView.canGoBack()){
      webView.goBack();
      }else{
      super.onBackPressed();
      }
      }

  • Williams Caso

    Hola, gran aporte. Una consulta si deseo crear mis propios botonos para acceder a los Menus de mi web, como oculto o dejo inutil el menu de la web desde mi webview. Gracias.

    • A
      Daniel, Gestionatuweb.net

      Hola, desconozco que eso se pueda hacer. Además, desde que escribí este artículo parece que las políticas de Google cada vez son más severas con los webview, y los están limitando cada vez más a acciones concretas (como conectar con una pasarela de pago, o temas similares). De hecho ya no te dejan publicar en Google Play una APP que solamente incluya un webview.

      Creo que a la larga será mejor aprender a hacer aplicaciones nativas.

  • Hola Daniel. He seguido tus pasos pero cuando subo la APP al Play Store me la deniegan porque dicen que ya no admiten apps que embeban una web en su interior. Ni si siquiere demostrando que la web es mía y que tengo todos los derechos de las imágenes y los textos.

    Alguna solución ? Gracias.

    • A
      Daniel, Gestionatuweb.net

      Hola Rubén, pues no te puedo ayudar en esto, si las condiciones de Google han cambiado desde que publicamos el artículo, poco podemos hacer. A lo mejor es hora de ponerse a aprender a hacer APPs nativas 😀

  • Hola Daniel, gracias a ti.
    ¿tienes un código para un dialogo de salir de la app? aceptar – cancelar

  • Daniel, muchas gracias por tu apoyo, gracias a el logré ya finalizar mi APP y esta en proceso de publicación en google store, Abrazo por tu ayuda,
    Solo quiero aportar unas correcciones al código, si me lo permites.
    1. Hay un pequeño error en esta parte del tutorial:
    Añadimos la siguiente línea para crear el componente WebView:
    WebView miVisorWeb
    Debe ser
    WebView VisorWeb (para ajustarlo a tu código)
    2. Para la firma de la APP google solo acepta ya las bundle apps y falta un paso adicional que es ir al menu file / project structure / modules / app y llenar todos los datos de signing configs para que al firmar la bundle app no presente errores. Con esto último tardé mas de 2 semanas investigando.
    Espero que sirva de algo estas aclaraciones y gracias nuevamente por tu tiempo para ayuadarno a lograr la meta.

    • A
      Daniel, Gestionatuweb.net

      Muchas gracias Juan por tu comentario. Buena observación, se ve que en la primera captura usé VisorWeb y en las demás miVisorWeb. De todas formas se recomienda que cada uno use el ID que prefiera. Respecto a la firma, imagino que después del tiempo del artículo Google habrá cambiado las condiciones varias veces, jeje. De nuevo gracias por las observaciones.

  • Estoy probando el webView y cuando abro la APP me abre el navegador web del smartphone. La idea es que la APP funcione como navegador y no abra uno externo.

    ¿Alguna sugerencia? Muchas gracias.

    • A
      Daniel, Gestionatuweb.net

      Hola, pues no se, yo no he tenido ese problema. Pueden que estén empezando a restringir cada vez más los webviews con las nuevas versiones, sin embargo, recibo comentarios actuales diciendo que les funciona bien,

  • Son muy buenas instrucciones
    muchas gracias

  • Hola Daniel. Muy interesante. Pero tengo un problema grave. Cuando la suyo a play store de google me la deniegan porque dice que incumple con la normativa. No admiten por lo visto aplicaciones donde sólo tengan una webview de una página web. Sabes como puedo solucionarlo ? Es muy importante para nosotros tener activa ya la app.

    Un abrazo y gracias de antemano.

    • A
      Daniel, Gestionatuweb.net

      Hola Rubén, desconozco si han cambiado las condiciones de cómo tiene que estar la aplicación construida. Consulta con un técnico de Google el motivo exacto. ¿La web está bajo cifrado SSL? ¿Se ha generado correctamente la firma de la aplicación con Android Studio? Asegúrate de que el problema no sea otro.

      Un saludo.

      • Romel Tola

        Hola Daniel, comentarte que tengo el mismo problema, de acuerdo a las politicas de google: “No permitimos aplicaciones cuyo objetivo principal sea dirigir el tráfico de afiliados a un sitio web o proporcionar una vista web de un sitio web sin el permiso del propietario o administrador del sitio web.” , sabes como podemos proporcionar el permiso?

  • Carabajal Alejandro

    Daniel, buenas tardes, hice el webview a mi pagina y funciona todo perfecto, pero me encuentro con 2 problemas que no pude solucionar, mi pagina es una directorio comercial, y cuando apreto en un numoero telefonico no me abre la aplicacion de telefono para llamar, me da error de carga de pagina, y el segundo problema se da con la localizacion gps, esta tampoco me funciona, siempre si el webview se abre en la app, ahora cuando el webview se abre en el navegador predeterminado estas opciones me funcionan.gracias.

    • A
      Daniel, Gestionatuweb.net

      Hola Alejandro, he probado los enlaces telefónicos con la API 29 (Pie) y se ejecuta la función de llamar correctamente. No llama directamente, si no que abre el teclado telefónico con el número ya establecido.

      Para ello, asegúrate de que los enlaces teléfonicos son del tipo “tel:xxxxxxxxx”.

      De geolocalización no te puedo orientar, tengo algún artículo a nivel de navegador real (Firefox) con OpenStreetMaps y ya es complicado, imagino que un webView estará aún más limitado.

      La geolocalización está muy enfocada a aplicaciones nativas.

  • luis fuentes

    compañero muchas grasias buena explicacion, pero me surgio un problema que loq uiero para acceder en una web de red local y me dice que la pagina no existe como podria solucionarlo

  • hola, me funciono ,solo necesito que los link se abran dentro del mismo web view, he probado algunos codigos vi en tutoriales pero no me funcionan.

    tambien queria saber como puedo agregar una ventana de cargando o algo y luego que si me muestre la web .

  • Daniel gracias por el Post, esta muy bueno y facil de seguir.

    Pero al probar la app como comentas en mi Android 9.1 ni si quiera se habre, le doy click a la app y así como abre se cierra sola de inmediato, tengo colocada la url de https://google.com y aún así.

    Podrias ayudarme?

  • rodrigo condori flores

    hola un buen aporte. lo que quiero hacer es: abrir el web view en la aplicación, pero no un link de una pájina web. sino archivos html que yo creé. mas o menos tengo una idea de como se haría eso, pero tengo un problema. soy ciego, es decir que no veo, y en el archivo main.xml, loque tu haces es: programarlo con el editor grafico. en este paso me es inposible seguirte ya que como te dije soy ciego por lo que eso de arrastrar, y soltar elementos parami no sirbe. por lo que las interfaces graficas tengo que hacerlo abriendo el archivo xml en modo texto, y escribir el codigo a mano. entonces porfabor podrías hacerme el fabor de pegar el codigo del xml así como copiaste el codigo del .java? gracias, y nuebamente muy buen aporte. saludos

  • android:usesCleartextTraffic=”true” agregen en el AndroidManifest esa linea para los que tengan problemas con Android 9

  • Hola muchas gracias por el aporte, tengo el problema que cada click que hago en la web cargada me lleva fuera de la app en el navegador y justamente no es lo que quiero, se puede forzar que lo siga abriendo dentro de webView?

    Muchas gracias.

  • Hola, en tu código quiero implementar unas líneas que me ayuden a que el usuario no pueda ingresar a la actividad si no tiene internet o un toast o no se un alertdialog… espero puedas ayudarme gracias

  • Hola, Me ha servido grandemente la información.
    Todos los enlaces de la App abren el navegador web, por lo que me saca de la aplicación. ¿Cómo puedo usar los enlaces a otras páginas sin salir del WebView de la App?

    • A
      Daniel, Gestionatuweb.net

      Hola Luis, las páginas enlazadas deberían abrir dentro del WebView, no entiendo por qué las envía al navegador externo. ¿Puede ser que estés enlazando a páginas inseguras (http, en lugar de https)?

      Compruébalo, y revisa el código o prueba con APIs antiguas, hasta dar con el problema.
      Saludos.

  • QUIERO QUE EL WEB VIEW PUEDA LEER LOS TEL: COMO LO HACE GOOGLE O OPERA
    YA QUE ME DA ERROR HE LEIDOY NO ENCUENTRO SOLUCION
    NO QUIERO QUE EL WEB TENGA QUE LLAMAR A UN EXPLORADOR

    WebView miVisorWeb;
    String url = «https://google.com&#187;;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    miVisorWeb = (WebView) findViewById(R.id.visorWeb);

    final WebSettings ajustesVisorWeb = miVisorWeb.getSettings();
    ajustesVisorWeb.setJavaScriptEnabled(true);

    miVisorWeb.loadUrl(url);

    if (url.startsWith(«https:»)) {

    miVisorWeb.setWebViewClient(new WebViewClient());

    {

    if (url.startsWith(«tel:»)) {
    miVisorWeb.loadUrl(«http:URL MAS EL TELEFONO DE LA WBE»);
    }

    }

  • Ricardo Michel

    Hola me gusto mucho tu post y tengo un problema con mi App, el problema consiste en el webview me funciona en las api 28 no me carga las paginas web, sin embargo hago la prueba con la api27 y la carga sin problema. espero puedas ayudarme. saludos.

    • Hola. Tengo el mismo problema pero no comprendo los pasos para resolverlo. Solo sé que a partir de Android 9, las páginas HTTP están desactivadas por así decir.

      • A
        Daniel, Gestionatuweb.net

        Hola, acabo de probar la APP con Android API 29 y funciona correctamente. Es posible que tengas que especificar una url tipo HTTPS, es decir, que la web que intentes cargar en la aplicación tenga un certificado de cifrado SSL.

        Ten en cuenta que los WebViews de Android suelen utilizarse mucho para abrir pasarelas de pago en las APPs, y es posible que hayan reforzado este punto, permitiendo únicamente abrir páginas HTTPS.

        Intenta apuntar a una URL HTTPS como https://google.com a ver si sigues teniendo el mismo problema.

        Un saludo!

        • Daniel disculpa mis conocimientos autodidactas…
          Quiero pasar mi web a una app con web view todo esta bien he leido y hecho muchos ejercicios, pero

          Te dejo este codigo pero ni idea como hacer para que el web view me cargue tel:, mailto: como lo hacen los exploradores que en esos si funciona pero no se ve tan estético.

          WebView miVisorWeb;
          String url = “https://google.com”;

          @Override
          protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);

          miVisorWeb = (WebView) findViewById(R.id.visorWeb);

          final WebSettings ajustesVisorWeb = miVisorWeb.getSettings();
          ajustesVisorWeb.setJavaScriptEnabled(true);

          miVisorWeb.loadUrl(url);

          if (url.startsWith(“https:”)) {

          miVisorWeb.setWebViewClient(new WebViewClient());

          {

          if (url.startsWith(“tel:”)) {
          miVisorWeb.loadUrl(“http:URL MAS EL TELEFONO DE LA WBE”);
          }

          }

  • Buenas, muy bueno tu tutorial de como hacer un webview
    Te comento que yo tengo varios realziados hacer un tiempo y hace una semana cambie el celular y me vino con Android 9. Desde ahí no paro de tener problemas jajaja
    Puse hacer que mi app funcione en Android 9 pero ya no funciona mas en Android 7
    No se el motivo
    Te querría consultar si me dabas una mano con esto
    Muchas gracias

    • A
      Daniel, Gestionatuweb.net

      Hola Jorge, pues no sabría decirte pues yo aún estoy en Android 7 (y lo que me queda, jeje).

      Seguramente alguna función o método se han quedado obsoletos en la versión 9 y de ahí venga el problema. Yo intentería conectar el celular al PC mediante Depuración USB, es decir, arrancar la APP desde Android Studio directamente al teléfono y ver si el log de Android Studio lanza algún tipo de error.

      A partir de ese error tocará buscar como solucionarlo, seguro que esto ya le habrá pasado a más gente y estará solucionado en algún blog o foro.

      También puedes probar a bajar un dispositivo virtual Android 9 y hacerlo desde él, para asegurarnos de que el error se produce en todas las versiones de Android 9 y no solamente en tu dispositivo.

      O también, descargarte las últimas SDK de Android 9 y recompilar tu APK con ellas incluidas.

      Suerte!

      • Hermano excelente articulo, pero no es mi area de conoocimiento, no se si pudieras apoyarme con eso y cuanto me cobrarias por hacer la APK y subirla al playstore.?

        • Jose Luis Cardona

          Cordial Saludo:
          No sé si ya hiciste la app, sino estoy dispuesto a hacerla.
          Escríbame.

Deja tu comentario