【问题标题】:Open File Chooser with one button and camera app with second button android webview kotlin用一个按钮打开文件选择器,用第二个按钮打开相机应用程序 android webview kotlin
【发布时间】:2019-09-23 20:57:32
【问题描述】:

我有两个 html 按钮,一个用于上传所有类型的文件,另一个用于打开相机和捕获图像。

#File upload
<input type="file" >

#Open Camera
<input type="file" capture="camera" multiple accept="image/*">

我正在使用 WebChromeClient 在 kotlin 中打开文件选择器,它工作正常,并且使用以下代码将文件上传到服务器。

    webView.setWebChromeClient(object: WebChromeClient() {
        override fun onShowFileChooser(webView:WebView, filePathCallback: ValueCallback<Array<Uri>>, fileChooserParams:FileChooserParams):Boolean {
            if (file_permission() && Build.VERSION.SDK_INT >= 21) {
                mFilePathCallback = filePathCallback

                val intent = Intent(Intent.ACTION_GET_CONTENT)                    
                intent.setType("*/*")
                startActivityForResult(intent, PICKFILE_REQUEST_CODE)
                return true
            }else
                return false
        }

    })

如何将相机打开选项与 WebChromeClient 集成,以便它可以检测按下的 html 按钮并相应地打开意图

【问题讨论】:

    标签: android kotlin webview


    【解决方案1】:

    也许你可以使用WebChromeClient.FileChooserParams,它有一个叫做getTitle()的方法。

    来自文档

    返回用于此文件选择器的标题。如果为空,则为默认值 应该使用标题。

    【讨论】:

    • 但是我们怎么知道按下了哪个按钮
    • @ArshDoda 尝试在 Logcat 中打印getTitle() 方法的值并告诉我结果
    • 在 kotlin 中,我用 fileChooserParams.title 调用它,在这两种情况下它都是空的
    • @try 在 html 输入标签中给出 alt 和 title 并查看 logcat 值
    • 还是空的
    【解决方案2】:

    最后,通过发送控制台消息并在 kotlin 中使用 onConsoleMessage() 捕获它来解决

    【讨论】:

    • 另一种方法是使用fileChooserParams.acceptTypes
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-19
    • 2012-12-08
    • 2012-10-23
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多