[Android Studio] CyLSanMiguel:
Good day. I'm new to android development and I'm trying to develop a simple webview application, picked a nice template and went through the steps and made good progress, I managed to load my site fully and enable javascript, that works as intended, however I'm not able to make the app download anything, I host a few pdf files that should open or download through it, but nothing happens.

I looked at a few answers here and it is to my understanding that I need to specifically add a function for that, could you give me a hand? I have tried multiple different code and tweaking them, but I wasn't able to get it to work, here is my base code:

package com.logista.test.ui.home

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.webkit.WebViewClient
import android.app.DownloadManager
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.logista.test.R

class HomeFragment : Fragment() {

private lateinit var homeViewModel: HomeViewModel

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_home, container, false)
val myWebView: WebView = root.findViewById(R.id.webview)
myWebView.webViewClient = WebViewClient()
myWebView.settings.javaScriptEnabled = true
myWebView.loadUrl("https://www.example.org/")
return root
}
}

I believe I should be adding

import android.app.DownloadManager

And tweak this

// Set web view download listener

web_view.setDownloadListener(DownloadListener {
url,
userAgent,
contentDescription,
mimetype,
contentLength ->

// Initialize download request
val request = DownloadManager.Request(Uri.parse(url))

// Get the cookie
val cookies = CookieManager.getInstance().getCookie(url)

// Add the download request header
request.addRequestHeader("Cookie",cookies)
request.addRequestHeader("User-Agent",userAgent)

// Set download request description
request.setDescription("Downloading requested file....")

// Set download request mime tytpe
request.setMimeType(mimetype)

// Allow scanning
request.allowScanningByMediaScanner()

// Download request notification setting
request.setNotificationVisibility(
DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)

// Guess the file name
val fileName = URLUtil.guessFileName(url, contentDescription, mimetype)

// Set a destination storage for downloaded file
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName)

// Set request title
request.setTitle(URLUtil.guessFileName(url, contentDescription, mimetype));

// DownloadManager request more settings
request.setAllowedOverMetered(true)
request.setAllowedOverRoaming(false)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
request.setRequiresCharging(false)
request.setRequiresDeviceIdle(false)
}
request.setVisibleInDownloadsUi(true)

// Get the system download service
val dManager = getSystemService(Context.DOWNLOAD_SERVICE) as DownloadManager

// Finally, request the download to system download service
dManager.enqueue(request)
})

// Load button click listener
button_load.setOnClickListener{
// Load url in a web view
web_view.loadUrl(url)
}

}

Taken from here: https://android--code.blogspot.com/2018/03/android-kotlin-webview-file-download.html

I did the basics, renaming the function accordingly and such, but it gives me quite a few errors when building the app, for instance uri isn't defined, cookiemanager isn't defined, environment isn't defined, build isn't defined, and such, could you give me some guidance?