Skip to main content

Posts

Showing posts with the label WebView

Jetpack Compose: WebView progress percentage

Introduction In the world of Android development, Jetpack Compose has quickly become a favored tool for building modern, responsive UIs. It simplifies the UI code by offering declarative syntax and allowing developers to focus more on building a seamless user experience. However, integrating features that interact with the native Android components, like WebView, can still be a bit challenging for developers who are more accustomed to the imperative approach. In this example, we will explore how to display a WebView with a progress indicator using Jetpack Compose. This tutorial walks through a simple app that displays the page load progress as a percentage when using WebView in Jetpack Compose. This example uses a combination of Jetpack Compose for UI and Android's native WebView to load and display web pages. We will break down the code to understand how the scaffold structure works in Compose, how to integrate native Android components (WebView), and how to show the loading progr...

Jetpack Compose: WebView ProgressIndicator

Introduction This Android Kotlin example demonstrates the integration of a WebView with a ProgressIndicator in a Jetpack Compose UI. Jetpack Compose, the modern toolkit for building native Android UIs, allows developers to create responsive and dynamic interfaces with less boilerplate code. Here, we see how to embed a WebView within a Compose layout and manage its loading state with a circular progress indicator, providing users visual feedback during webpage loading. In this tutorial, we will break down the components and logic used in the code, focusing on the UI elements, state management, and how the WebView client interacts with the rest of the composable elements. By the end, you'll understand how Jetpack Compose can simplify embedding traditional Android views, like WebView, into declarative UI components. Scaffold Layout The code begins by defining the main user interface inside a Scaffold composable, which serves as the base structure of the UI. The Scaffold provides a...

Jetpack Compose: How to use WebView

Introduction Jetpack Compose has become a popular framework for developing Android applications with its modern declarative approach. Despite its flexibility, there are still some scenarios where developers need to integrate traditional Android views, such as WebView , into their Compose-based UI. This can be achieved by combining the power of Jetpack Compose with Android's AndroidView interop feature, allowing developers to embed native Android views within a Compose layout. In this article, we’ll walk through how to use a WebView inside a Jetpack Compose project and provide details on how to configure it effectively. This Kotlin example demonstrates the use of WebView within a Jetpack Compose UI. We will break down the code into sections, explaining the setup, how to integrate WebView within Compose, and how to apply necessary settings for a smooth browsing experience. Let’s take a closer look at how this is done. Main Structure: Setting Up Compose Scaffold The entry point fo...

android kotlin - WebView image download example

MainActivity.kt package com.cfsuman.kotlinexamples import android.Manifest import android.content.Context import android.graphics.Bitmap import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import kotlinx.android.synthetic.main.activity_main.* import android.os.Build import android.view.View import android.app.DownloadManager import android.content.pm.PackageManager import android.net.Uri import android.os.Environment import android.webkit.* import android.webkit.WebView import android.view.ContextMenu class MainActivity : AppCompatActivity() { private val url = "https://www.google.com" private val PermissionsRequestCode = 123 private lateinit var managePermissions: ManagePermissions override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Initialize a list of required permissions to request runtime ...

android kotlin - WebView file download example

MainActivity.kt package com.cfsuman.kotlinexamples import android.Manifest import android.content.Context import android.graphics.Bitmap import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import kotlinx.android.synthetic.main.activity_main.* import android.os.Build import android.view.View import android.app.DownloadManager import android.net.Uri import android.os.Environment import android.webkit.* class MainActivity : AppCompatActivity() { private val url = "https://en.savefrom.net/" private val PermissionsRequestCode = 123 private lateinit var managePermissions: ManagePermissions override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Initialize a list of required permissions to request runtime val list = listOf<String>( Manifest.permission.WRITE_EXTERNAL_STORAGE ) ...

android kotlin - WebView example

MainActivity.kt package com.cfsuman.kotlintutorials import android.app.Activity import android.content.Context import android.graphics.Bitmap import android.os.Build import android.os.Bundle import android.view.View import android.webkit.WebChromeClient import android.webkit.WebSettings import android.webkit.WebView import android.webkit.WebViewClient import android.widget.Button import android.widget.ProgressBar import android.widget.Toast import androidx.appcompat.app.AlertDialog class MainActivity : Activity() { lateinit var webView:WebView private val url = "https://www.android--code.com" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Get the widgets references from XML layout webView = findViewById(R.id.webView) val buttonLoad: Button = findViewById(R.id.buttonLoad) val buttonBack: Button = findViewById(R.id.buttonBack)...

android - Detect when WebView finish loading a URL

MainActivity.java package com.cfsuman.androidtutorials; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private MainActivity mContext; private WebView mWebView; private TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the context mContext = this; // Get the widgets reference from XML layout mWebView = findViewById(R.id.webView); mTextView = findViewById(R.id.textView); Button button = findViewById(R.i...

android - How to enable WebView zoom

MainActivity.java package com.cfsuman.androidtutorials; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the widgets reference from XML layout mWebView = findViewById(R.id.webView); // Request to render the web page renderWebPage("https://www.google.com"); } // Custom method to render a web page protected void renderWebPage(String urlToRender){ mWebView.setWebViewClient(new WebViewClient() { @Override ...

android - Display ProgressBar while loading in WebView

MainActivity.java package com.cfsuman.androidtutorials; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private MainActivity mContext; private WebView mWebView; private ProgressBar mProgressBar; private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the activity mContext = MainActivity.this; // Get the widgets reference from XML layout mButton = findViewById(R.id.button); mWebView =...

android - How to get WebView loaded page title and url

MainActivity.java package com.cfsuman.androidtutorials; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.Objects; public class MainActivity extends AppCompatActivity { private MainActivity mContext; private WebView mWebView; private String mTitle = ""; private String mUrl = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get the activity mContext = MainActivity.this; // Get the widgets reference from XML layout Button button = findViewById(R.id.button); mWebView = findViewById(R.id.webView); // Set ...