У меня есть приложение 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
вместо пути (как я и ожидал)