WebView Advanced Guide
Accompanist WebView Integration
AndroidView(
factory = { context ->
WebView(context).apply {
webViewClient = MyWebViewClient()
addJavascriptInterface(MyJsInterface(), "Android")
}
}
)
JavaScript Bridge
class MyJsInterface {
@JavascriptInterface
fun showToast(message: String) {
// Called from JavaScript
}
}
// Call from JS: Android.showToast("Hello")
Evaluate JavaScript
webView.evaluateJavascript("document.title") { result ->
Log.d("WebView", "Title: $result")
}
WebViewClient Customization
class MyWebViewClient : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
return when (request?.url?.scheme) {
"myapp" -> handleCustomScheme(request.url)
else -> false
}
}
}
CookieManager
val cookieManager = CookieManager.getInstance()
cookieManager.setAcceptCookie(true)
cookieManager.setCookie(url, "session_id=123; Path=/")
DownloadManager Integration
webView.setDownloadListener { url, _, contentDisposition, mimeType, _ ->
val request = DownloadManager.Request(Uri.parse(url))
request.setDestinationInExternalPublicDir(
Environment.DIRECTORY_DOWNLOADS,
URLUtil.guessFileName(url, contentDisposition, mimeType)
)
context.getSystemService<DownloadManager>()?.enqueue(request)
}
8 Android app templates on Gumroad
Top comments (0)