我正在构建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。
谢谢!