package com.didvan.didvanapp import android.Manifest import android.content.pm.PackageManager import android.os.Bundle import android.webkit.PermissionRequest import android.webkit.WebChromeClient import android.webkit.WebSettings import android.webkit.WebView import android.webkit.WebViewClient import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat class FullscreenWebViewActivity : AppCompatActivity() { private lateinit var webView: WebView private val PERMISSION_REQUEST_CODE = 1234 private var pendingPermissionRequest: PermissionRequest? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) webView = WebView(this) setContentView(webView) val url = intent.getStringExtra("url") ?: "https://www.google.com" val settings = webView.settings settings.javaScriptEnabled = true settings.mediaPlaybackRequiresUserGesture = false settings.allowContentAccess = true settings.allowFileAccess = true settings.domStorageEnabled = true settings.databaseEnabled = true settings.cacheMode = WebSettings.LOAD_DEFAULT webView.webViewClient = WebViewClient() webView.webChromeClient = object : WebChromeClient() { override fun onPermissionRequest(request: PermissionRequest?) { runOnUiThread { if (request == null) { super.onPermissionRequest(request) return@runOnUiThread } val requestedResources = request.resources val permissionsNeeded = mutableListOf() for (resource in requestedResources) { when (resource) { PermissionRequest.RESOURCE_VIDEO_CAPTURE -> { if (ContextCompat.checkSelfPermission(this@FullscreenWebViewActivity, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { permissionsNeeded.add(Manifest.permission.CAMERA) } } PermissionRequest.RESOURCE_AUDIO_CAPTURE -> { if (ContextCompat.checkSelfPermission(this@FullscreenWebViewActivity, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { permissionsNeeded.add(Manifest.permission.RECORD_AUDIO) } } } } if (permissionsNeeded.isNotEmpty()) { // درخواست پرمیژن runtime pendingPermissionRequest = request ActivityCompat.requestPermissions(this@FullscreenWebViewActivity, permissionsNeeded.toTypedArray(), PERMISSION_REQUEST_CODE) } else { // پرمیژن ها داده شده، قبول کن درخواست رو request.grant(request.resources) } } } } webView.loadUrl(url) } override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { if (requestCode == PERMISSION_REQUEST_CODE) { var allGranted = true for (result in grantResults) { if (result != PackageManager.PERMISSION_GRANTED) { allGranted = false break } } if (allGranted) { pendingPermissionRequest?.grant(pendingPermissionRequest?.resources) } else { pendingPermissionRequest?.deny() } pendingPermissionRequest = null } else { super.onRequestPermissionsResult(requestCode, permissions, grantResults) } } override fun onDestroy() { super.onDestroy() webView.destroy() } }