Плагин выбора файлов в приложении Cordova для Android - PullRequest
0 голосов
/ 29 октября 2018

У меня есть приложение Cordova, и я хочу позволить пользователю выбрать файл CSV из памяти устройства. Я сам создал плагин и могу успешно вызвать его в коде Javascript:

CallbackContext tmp = null;

    protected boolean openFile(CallbackContext callbackContext)
    {
        Context ctx = this.cordova.getActivity().getApplicationContext();
        Intent intent = new Intent();
        intent.setType("*/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);

        PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT);
        r.setKeepCallback(true);
        callbackContext.sendPluginResult(r);
        tmp = callbackContext;

        this.cordova.setActivityResultCallback(this);
        this.cordova.startActivityForResult(this, Intent.createChooser(intent, "Select a file"), 123456);
        return true;
    }

Однако теперь я немного растерялся. Обычно в конце функции я просто вызываю callbackContext.success(myResult); с любым результатом (обычно строкой). На этот раз, хотя я не могу. Проверка в Интернете выглядит так, будто мне нужно создать еще одну функцию:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    if(requestCode == 123)
    {
        Uri uri = data.getData();
        tmp.sendPluginResult(new PluginResult(PluginResult.Status.OK, uri.toString()));
    }
}

но теперь я понятия не имею, что делать с возвращенными данными. Я продолжаю получать что-то вроде:

содержание: //com.android.providers.media.documents/document/image: 62

вместо пути (как я и ожидал)

...