无法在Android 9上通过Android WebView打开文件选择器

3

我正在尝试在移动设备的WebView应用程序中打开输入type="file"文件选择器,但是其他相关问题中提供的解决方案适用于早期Android版本,在Android 9上似乎无法正常工作。 问题似乎出在这个特定的代码片段:

//For Lollipop 5.0+ Devices:  
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
    {
        if (uploadMessage != null) {
            uploadMessage.onReceiveValue(null);
            uploadMessage = null;
        }

        uploadMessage = filePathCallback;

        Intent intent = fileChooserParams.createIntent();
        try
        {
            startActivityForResult(intent, REQUEST_SELECT_FILE);
        } catch (ActivityNotFoundException e)
        {
            uploadMessage = null;
            Toast.makeText(MainActivity.this, "Error: Unable to open file browser", Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
1个回答

2
使用以下代码进行修复。
        // For Lollipop 5.0+ Devices
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
        {
            if (uploadMessage != null) {
                uploadMessage.onReceiveValue(null);
                uploadMessage = null;
            }

            uploadMessage = filePathCallback;

            Intent intent = fileChooserParams.createIntent();
            try
            {
                intent.setAction(Intent.ACTION_GET_CONTENT);
                intent.setType("image/*,video/*,audio/*,file/*");
                startActivityForResult(intent, REQUEST_SELECT_FILE);
            } catch (ActivityNotFoundException e)
            {
                uploadMessage = null;
                Toast.makeText(MainActivity.this, "Error: Unable to open file browser", Toast.LENGTH_LONG).show();
                return false;
            }
            return true;
        }

1
intent.setType("image/*"); 仅限图片 - undefined
intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("image/,video/,audio/,file/"); 这两行代码起作用了,谢谢你。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接