android - 处理文件选择器 android WebViews
问题描述
我有一个问题,伙计们。我有一个webView
应用程序。应用程序内部是一个按钮,应该允许用户从设备中选择文件并上传到 api。一切都通过网络处理。问题是在webView
应用程序上,点击按钮时,什么也没有发生,但是,当我尝试使用 chrome 浏览器或浏览器应用程序时,它运行良好。
我需要做些什么来确保它与 chrome 浏览器的工作方式相同?我不想在本地处理这个功能,因为这是我在网上看到的唯一解决方案。无论如何我都试过这样做,但它不会像这张图片那样弹出那些文件选项
有没有更简单的方法来处理这个?
解决方案
尝试这个:
private var filePathCallback: ValueCallback<Array<Uri>>? = null
override fun onCreate(savedInstanceState: Bundle?) {
webView.webChromeClient = object: WebChromeClient() {
override fun onShowFileChooser(webView: WebView?, filePathCallback: ValueCallback<Array<Uri>>?, fileChooserParams: FileChooserParams?): Boolean {
startActivityForResult(fileChooserParams?.createIntent(), CHOOSE_FILE_REQUEST_CODE)
this@MainActivity.filePathCallback = filePathCallback
return true
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
CHOOSE_FILE_REQUEST_CODE -> {
if (resultCode == Activity.RESULT_OK) {
filePathCallback?.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data))
filePathCallback = null
}
}
}
}
推荐阅读
- python - 用 Python 阅读 Lotus Notes
- c# - 使用 Serilog 自动记录 Visual Studio 扩展的未处理异常
- c - 我在可视代码 arm64 中遇到此代码的分段错误?
- leaflet - 带有EPSG:25833光栅图像的GDAL2tiles破坏了瓷砖中的黑色错字
- python - 提交和推送后在 docker 容器中找不到 conda 命令
- android - 如何修复重复类 org.jetbrains.annotations.TestOnly 错误?
- c# - 如何使用 System.Data.Entity.Infrastructure.DbChangeTracker 跟踪链接表中的更改
- mysql - 需要帮助使用日期范围进行逻辑开始日期和结束日期过滤
- html - 使用 CSS 将文本颜色设置为红色背景上的白色和白色背景上的黑色文本颜色
- python - Python 的 gc 在没有显式调用 gc.disable() 的情况下被禁用