Инициировать выбор нескольких файлов без нажатия и удержания - Android Cordova - PullRequest
0 голосов
/ 29 октября 2018

Я создаю приложение Cordova и обновил метод onShowFileChooser в SystemWebChromeClient.java, чтобы позволить выбирать несколько файлов. Проблема в том, что для выбора нескольких файлов вы должны нажать и удерживать первый файл, чтобы начать множественный выбор. Что мне нужно сделать, это разрешить выбор нескольких файлов без необходимости щелкать и удерживать первый файл. Я хотел бы иметь возможность сделать это без дополнительного плагина, если это возможно.

Вот 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.

Заранее спасибо!

...