android.net.Uri
import android.webkit.*
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)
// Настройка WebView
val webSettings: WebSettings = webView.settings
webSettings.javaScriptEnabled = true // Включаем поддержку JavaScript
webSettings.domStorageEnabled = true // Включаем локальное хранилище для JavaScript
webSettings.allowFileAccess = true
webSettings.allowContentAccess = true
webView.settings.setGeolocationEnabled(true)
// Запрашиваем разрешения на доступ к хранилищу и камере
val storagePermission = Manifest.permission.WRITE_EXTERNAL_STORAGE
val cameraPermission = Manifest.permission.CAMERA
val granted = PackageManager.PERMISSION_GRANTED
if (ContextCompat.checkSelfPermission(this, storagePermission) != granted ||
ContextCompat.checkSelfPermission(this, cameraPermission) != granted) {
ActivityCompat.requestPermissions(
this,
arrayOf(storagePermission, cameraPermission),
0
)
}
webView.webChromeClient = object : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView,
filePathCallback: ValueCallback<Array<Uri>>,
fileChooserParams: FileChooserParams
): Boolean {
// Handle file upload here
return true
}
}
// Настройка WebViewClient
webView.webChromeClient = object : WebChromeClient() {
override fun onGeolocationPermissionsShowPrompt(
origin: String,
callback: GeolocationPermissions.Callback
) {
if (ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.ACCESS_FINE_LOCATION) == granted) {
// Уже есть разрешение на геолокацию
callback.invoke(origin, true, false)
} else {
// Запрашиваем разрешение у пользователя
ActivityCompat.requestPermissions(
this@MainActivity,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
0
)
}
}
}
// Загружаем веб-страницу
webView.loadUrl("")
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == 0) {
// Это код запроса разрешения, который мы использовали в requestPermissions
if (grantResults.isNotEmpty() && grantResults.all { it == PackageManager.PERMISSION_GRANTED }) {
// Разрешения на геолокацию, хранилище и камеру были предоставлены
webView.reload()
}
}
}
override fun onBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
super.onBackPressed()
}
}
}
снова мимо
Senior, воспользуйтесь pastebin, пожалуйста
а вопрос где
Он выше задавал, гы
он сеньор в том, чтобы пить кофе
Обсуждают сегодня