我有一个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()));
}
}
但是现在我不知道如何处理返回的数据。我不断收到类似的东西:
content://com.android.providers.media.documents/document/image:62
代替路径(正如我期望的那样)