Здесь есть несколько таких же вопросов о переполнении стека, но без ответа, и если да, то это на Java, а не на Kotlin.
У меня есть простое приложение WebView, написанное на Kotlin, которое открывает мое веб-приложение.Все хорошо, но у меня проблема с загрузкой файлов через форму HTML.Я понял, как открыть FileChooser, но когда я выбираю файл, ввод по-прежнему не имеет значения.
У вас когда-нибудь была такая же проблема?
Ниже мой код:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(activity_main)
webView.setWebViewClient(WebViewClient())
webView.settings.javaScriptEnabled = true
webView.settings.allowFileAccess = true
webView.settings.allowFileAccessFromFileURLs = true
webView.settings.setAllowFileAccess(true)
webView.settings.setAllowContentAccess(true)
webView.settings.setGeolocationEnabled(true)
webView.fitsSystemWindows = true
webView.settings.domStorageEnabled = true
webView.settings.setSupportMultipleWindows(true)
webView.settings.loadWithOverviewMode = true
webView.settings.allowContentAccess = true
webView.settings.setGeolocationEnabled(true)
webView.webChromeClient = (object:WebChromeClient() {
override fun onGeolocationPermissionsShowPrompt(origin: String?, callback: GeolocationPermissions.Callback?) {
callback!!.invoke(origin, true, false)
}
// onShowFileChooser
override fun onShowFileChooser(view: WebView, filePathCallback:ValueCallback<Array<Uri>>, fileChooserParams:FileChooserParams):Boolean {
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.addCategory(Intent.CATEGORY_OPENABLE)
intent.setType("image/*")
val PICKFILE_REQUEST_CODE = 100
startActivityForResult(intent, PICKFILE_REQUEST_CODE)
return false
}
})
webView.settings.setRenderPriority(WebSettings.RenderPriority.HIGH)
webView.settings.cacheMode = WebSettings.LOAD_NO_CACHE
if (Build.VERSION.SDK_INT >= 19) {
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null)
} else {
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
}