在Android WebView中使用输入文件可以通过以下步骤完成:
AndroidManifest.xml
文件中添加文件读取权限:
val webView: WebView = findViewById(R.id.webview)
webView.settings.javaScriptEnabled = true
webView.settings.allowFileAccess = true
WebChromeClient
并重写onShowFileChooser
方法:webView.webChromeClient = object : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView?,
filePathCallback: ValueCallback>?,
fileChooserParams: FileChooserParams?
): Boolean {
// 创建一个Intent,用于选择文件
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.type = "*/*" // 设置文件类型,这里为任意类型的文件
startActivityForResult(intent, REQUEST_SELECT_FILE)
// 保存回调函数以便在选择文件后将文件路径返回给WebView
mFilePathCallback = filePathCallback
return true
}
}
onActivityResult
方法,将选择的文件路径返回给WebView:override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_SELECT_FILE) {
if (resultCode == Activity.RESULT_OK) {
// 获取选择的文件路径
val selectedFileUri = data?.data
if (selectedFileUri != null) {
mFilePathCallback?.onReceiveValue(arrayOf(selectedFileUri))
} else {
mFilePathCallback?.onReceiveValue(null)
}
} else {
mFilePathCallback?.onReceiveValue(null)
}
}
}
这样,你就可以在WebView中使用输入文件了。