首页 > 解决方案 > 无需单击并按住即可启动多个文件选择 - Android Cordova

问题描述

我正在构建一个 Cordova 应用程序并更新了 SystemWebChromeClient.java 中的 onShowFileChooser 方法以允许选择多个文件。问题是,要选择多个文件,您必须单击并按住第一个文件才能启动多选。我需要它做的是允许选择多个文件,而不必单击并按住第一个文件。如果可能的话,我希望能够在没有额外插件的情况下做到这一点。

这是多文件选择的 HTML:

<input type="file" name="files[]" accept="image/*,video/*" multiple />

这是多文件选择的Java代码:

@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean onShowFileChooser(WebView webView, final ValueCallback<Uri[]> filePathsCallback, final WebChromeClient.FileChooserParams fileChooserParams) {
    Intent intent = fileChooserParams.createIntent();
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    intent.setType("*/*");
    try {
        parentEngine.cordova.startActivityForResult(new CordovaPlugin() {
            @Override
            public void onActivityResult(int requestCode, int resultCode, Intent intent) {
                Uri[] result = WebChromeClient.FileChooserParams.parseResult(resultCode, intent);

                if (result == null) {
                    ClipData clipData = intent.getClipData();
                    result = new Uri[clipData.getItemCount()];

                    for (int i = 0; i < clipData.getItemCount(); i++) {
                        result[i] = clipData.getItemAt(i).getUri();
                    }
                }

                filePathsCallback.onReceiveValue(result);
            }
        }, intent, FILECHOOSER_RESULTCODE);
    } catch (ActivityNotFoundException e) {
        LOG.w("No activity found to handle file chooser intent.", e);
        filePathsCallback.onReceiveValue(null);
    }
    return true;
}

此问题仅发生在 Android 中,而不发生在 iOS 中。

使用 Cordova 版本 8.1.2 和 Android 平台 7.1.1。

提前致谢!

标签: javaandroidcordovamobilemobile-application

解决方案


推荐阅读