Android WebView in Kotlin
Last Updated :
19 Apr, 2023
WebView is a view that is used to display web pages inside the app. It is used to turn the app into a web application. In this article let's display the https://www.geeksforgeeks.org/ inside the Android Application using Kotlin.
Note: To implement Android WebView in Java please refer How to use WebView in Android using Java.
Class Hierarchy
kotlin.Any
android.view.View
android.view.ViewGroup
android.widget.AbsoluteLayout
android.webkit.WebView
Approach:
Step 1: Create a new project
To create a new project in android studio please refer, how to Create/Start a New Project in Android Studio.
Remember to add these to your gradle(app) files
plugins
{
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
Step 2: Modify activity_main.xml
This is used to set the front end of the Application, we place the WebView in the front end.
XML
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!-- Place Web-view on the Screen -->
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Step 3: Modify MainActivity.kt
This is the back end of the Application, here we assign values to the views and actions to the views.
Kotlin
package com.example.webview_kotlin
import android.os.Bundle
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var webView: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webView = findViewById(R.id.webView)
// WebViewClient allows you to handle
// onPageFinished and override Url loading.
webView.webViewClient = WebViewClient()
// this will load the url of the website
webView.loadUrl("https://www.geeksforgeeks.org/")
// this will enable the javascript settings, it can also allow xss vulnerabilities
webView.settings.javaScriptEnabled = true
// if you want to enable zoom feature
webView.settings.setSupportZoom(true)
}
// if you press Back button this code will work
override fun onBackPressed() {
// if your webview can go back it will go back
if (webView.canGoBack())
webView.goBack()
// if your webview cannot go back
// it will exit the application
else
super.onBackPressed()
}
}
Step 4: Modify AndroidManifest.xml
In AndroidManifest.xml, one needs to include the below permission, in order to access the internet.
XML
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.webview_kotlin">
<!-- Give permission for app to access the Internet -->
<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>
Output: Run on Emulator
When we run the application either on the Emulator or on the Android Smartphone we can see this as our output. Remember to turn on the internet on your device.
