为什么“onShowFileChooser”不覆盖任何内容?

时间:2021-01-22 08:20:48

标签: android kotlin

告诉我我在代码中做错了什么,为什么“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)
}

}

1 个答案:

答案 0 :(得分:0)

因为第二个参数的类型不对;它should be

ValueCallback<Array<Uri>?>

也许

ValueCallback<Array<Uri>?>?

因为文件选择器可以选择多个文件(如果我正确理解文档,? 之后的 Array 肯定应该在那里)。