Android WebView in Kotlin
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 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 // 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" ?> 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.