告诉我我在代码中做错了什么,为什么“onShowFileChooser”不覆盖任何内容? 创建该类是为了允许 webview 从手机“webview 导入文件”上传文件。
class FileChooseClient(private val activity: ActivityChoser) : WebChromeClient() {
override fun onShowFileChooser(v: WebView?, fpc: ValueCallback<Uri>?, fcp: FileChooserParams): Boolean {
if (activity.uploadMessage != null) {
activity.uploadMessage?.onReceiveValue(null)
activity.uploadMessage = null
}
activity.uploadMessage = fpc
val intent: Intent = fcp.createIntent()
try {
activity.startActivityForResult(intent, ActivityChoser.REQUEST_SELECT_FILE)
(activity as Activity).overridePendingTransition(
android.R.anim.fade_in,
android.R.anim.fade_out
)
} catch (e: ActivityNotFoundException) {
activity.uploadMessage = null
return false
}
return true
}
interface ActivityChoser {
companion object {
const val REQUEST_SELECT_FILE = 100;
}
var uploadMessage: ValueCallback<Uri>?
fun startActivityForResult(intent: Intent, req: Int)
}
}
答案 0 :(得分:0)
因为第二个参数的类型不对;它should be
ValueCallback<Array<Uri>?>
也许
ValueCallback<Array<Uri>?>?
因为文件选择器可以选择多个文件(如果我正确理解文档,?
之后的 Array
肯定应该在那里)。