WebView

Explicación del concepto de WebView.

DEFINICIÓN

Hereda de:

Una View que presenta páginas web.

USO BÁSICO

En la mayoría de los casos se recomienda utilizar un navegador estándar como Chrome para mostrar éste contenido a los usuarios. Para ello utilizamos un intent.

Esto es debido a que, aunque el WebView permite mostrar este contenido, se pierden algunas de las características base de cualquier navegador estándar.

Una WebView es útil cuando se necesita tener un control sobre la UI y las configuraciones avanzadas de navegación. De esta manera se puede desarrollar un diseño concreto de navegación para nuestra APP.

USO DESDE XML

<WebView
    android:id="@+id/wv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

No se muestra nada en la Activity por que es necesario configurar el WebView antes de poder hacer uso de él.

CONFIGURACIÓN

Para configurar un WebView hay que realizar varios pasos:

Solicitar permiso de Internet

En primer lugar se debe ir al AndroidManifest.xml y solicitar permisos para el uso de Internet. Esto se hace con la siguiente línea de código:

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

<application>
.....

Ejecutar el web Browser

Esto lo realizamos en el MainActivity.kt

package com.example.android.appdeejemplo

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.webkit.WebView

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val webView: WebView = findViewById(R.id.wv)
        val url = "http://www.google.es"
        webView.loadUrl(url)
    }
}

Como puede ver, no recibimos el resultado que queremos ya que nos reenvía directamente a seleccionar navegador.

Esto ocurre por que, por defecto, no está activado Javascript.

Activar Javascript

Para activar Javascript debemos hacer lo siguiente:

  • En primer lugar, crear una instancia de WebSettings.

val webSettings: WebSettings = webView.settings
  • Después, en esas WebSettings, activamos Javascript

webSettings.javaScriptEnabled = true
  • Por último, relacionamos estas WebSettings con nuestro WebView creando un WebViewClient:

webView.webViewClient = WebViewClient()

De esta manera nos queda:

MainActivity.kt
package com.example.android.appdeejemplo

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.webkit.WebSettings
import android.webkit.WebView
import android.webkit.WebViewClient

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val webView: WebView = findViewById(R.id.wv)
        val url = "http://www.google.es"
        val webSettings: WebSettings = webView.settings

        webSettings.javaScriptEnabled = true
        webView.webViewClient = WebViewClient()

        webView.loadUrl(url)
    }
}

Last updated