WebView Android Kotlin — отображение веб-страницы в приложении

Android WebView в Kotlin — это компонент представления, который отображает веб-страницы в приложении. Он использует механизм WebKit для отображения веб-страниц. Класс android.webkit.WebView является подклассом класса AbsoluteLayout.

Методы loadUrl() и loadData() WebView используются для загрузки и отображения веб-страниц.

Существуют различные способы загрузки веб-страницы в WebView, например:

Загрузка содержимого HTML в виде строки в классе:

val wedData: String =  "<html><body><h1>Hello, Javatpoint!</h1></body></html>"
val mimeType: String = "text/html"
val utfType: String = "UTF-8"
webView.loadData(wedData,mimeType,utfType)

Загрузка веб-страницы(.html, .jsp и т. д.) из приложения. В этом случае веб-страницы помещаются в каталог активов.

webView.loadUrl("file:///android_asset/index.html")

Загрузка веб-URL внутри WebView:

webView.loadUrl("https://www.javatpoint.com/")

Пример Kotlin Android WebView

В этом примере мы загрузим веб-URL-адрес в компонент WebView в Котлин и переопределим URL-адрес.

Структура каталогов

Kotlin Android WebView - структура каталога

Activity_main.xml

Добавьте компонент WebView в файл activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="example.javatpoint.com.kotlinwebview.MainActivity">


    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
</LinearLayout>

AndroidMenifest.xml

В файле AndroidMenifest.xml добавьте разрешение Интернета для подключения к сети.

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

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="example.javatpoint.com.kotlinwebview">
    <uses-permission android:name="android.permission.INTERNET"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.kt

Добавьте следующий код в класс MainActivity.kt. В этом классе мы используем метод loadUrl() WebView для загрузки веб-URL.

Создайте класс MyWebViewClient, расширяющий класс WebViewClient, переопределяющий метод shouldOverrideUrlLoading().

package example.javatpoint.com.kotlinwebview

import android.app.Activity
import android.os.Build
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.webkit.WebResourceError
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

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

      /*  val wedData: String =  "<html><body><h1>Hello, Javatpoint!</h1></body></html>"
        val mimeType: String = "text/html"
        val utfType: String = "UTF-8"
        webView.loadData(wedData,mimeType,utfType)*/

        /* val myWebUrl: String = "file:///android_asset/index.html"
         webView.loadUrl(myWebUrl)*/

        webView.webViewClient = MyWebViewClient(this)
        webView.loadUrl("https://www.javatpoint.com/")
    }
    class MyWebViewClient internal constructor(private val activity: Activity) : WebViewClient() {

        @RequiresApi(Build.VERSION_CODES.LOLLIPOP)
        override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
            val url: String = request?.url.toString();
            view?.loadUrl(url)
            return true
        }

        override fun shouldOverrideUrlLoading(webView: WebView, url: String): Boolean {
            webView.loadUrl(url)
            return true
        }

        override fun onReceivedError(view: WebView, request: WebResourceRequest, error: WebResourceError) {
            Toast.makeText(activity, "Got Error! $error", Toast.LENGTH_SHORT).show()
        }
    }
}

Вывод:

Вывод Android WebView

Оцените статью