У меня есть приложение, которое показывает веб-представление. Я наконец получил входные загрузки, работающие над этим:
class MainActivity : AppCompatActivity() {
private lateinit var webWindow: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webWindow = findViewById(R.id.webView)
webWindow.settings.javaScriptEnabled = true
webWindow.loadUrl("http://8wr.io/scoreboard/")
webWindow.webViewClient = WebViewClient()
webWindow.webChromeClient = MyWebChromeClient()
}
private var mFilePathCallback: ValueCallback<Array<Uri>>? = null
private val FILECHOOSER_RESULTCODE = 1
internal inner class MyWebChromeClient : WebChromeClient() {
override fun onShowFileChooser(webView:WebView, filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams:FileChooserParams):Boolean {
mFilePathCallback = filePathCallback
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = "image/*"
startActivityForResult(Intent.createChooser(intent, "Image Browser"), FILECHOOSER_RESULTCODE)
return true
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FILECHOOSER_RESULTCODE) {
mFilePathCallback?.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode,data))
mFilePathCallback = null
}
}
}
Однако, это позволяет загружать только один файл за раз. Форма на моем сайте допускает несколько файлов одновременно. Как я могу изменить средство выбора файлов, чтобы правильно обрабатывать несколько файлов?
Я попытался добавить:
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
Однако, хотя это позволяет мне выбрать несколько файлов ... результирующая форма не получает несколько вариантов выбора файлов. На самом деле он ничего не получает.