java - 无需单击并按住即可启动多个文件选择 - 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。
提前致谢!
解决方案
推荐阅读
- c# - 如何通过 C#/VBA 获取 PowerPoint 中的字符数据范围?
- gnucobol - Open Cobol 中的堆栈溢出
- c# - 数组在选择随机项 C#/Unity 时不给出越界错误消息
- python - 将我的 tkinter py 文件转换为 exe 后出现错误
- javascript - 如何在 onClick() 事件中使用 webAnimationsAPI?
- html - 在一个特定输入上删除其轮廓并仅保留边框
- python - Python忽略源.env文件
- javascript - JavaScript如何写一个小数点后2位的数字,它会以十进制显示0?
- java - 为什么 currenuser ID (firebase) 在我的 android 聊天应用程序中随接收者 ID 发生变化,这导致我的 Seen 消息功能出现问题?
- nginx - 呼叫超时(错误 1006) - bigbluebutton