是否可以使用Intent.ACTION_GET_CONTENT传递额外数据

时间:2015-01-31 15:11:11

标签: android android-intent

我的问题很简单。是否有可能以某种方式传递Intent.ACTION_GET_CONTENT的额外数据,其中Activity的{​​{1}}可以读出Intent

目前我已尝试使用某些标准onActivityResult()传递一些数据,但该数据会在我的活动中消失。 使用以下代码设置意图。

putExtra()

正如我所说,当我在我的活动中获得意图时,额外的数据已经消失了。有没有办法标记或设置意图所以它会保留额外的数据或其他我错过的东西?

如果无法做到这一点,是否还有其他类型的默认/标准方式?注意。我不想为此使用“共享首选项”。

谢谢!

更新

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");
intent.putExtra(CURRENT_REQUEST_CODE_TAG, getTargetRequestCode());
getActivity().startActivityForResult(intent, ADD_SIGNAL_REQUEST_CODE);

在我的onActivityForResult()中,@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { int currentRequestCode = data.getIntExtra(CURRENT_REQUEST_CODE_TAG, -1); } 总是返回默认值-1,而不是我配置的意图,它应该是值9或10.这告诉我额外的数据已经丢失,并且数据对象的调试文件证实了我的怀疑,intent参数不包含任何额外的数据。

似乎我发送的意图与我的onActivityResult()中收到的意图不一样。我理解这种行为,因为在我的情况下,默认的Android文件选择器被打开,让用户选择一个正确的MIME类型的文件,当用户选择一个文件时,我猜一个新的Intent是用所选文件的URI创建的,但是为什么额外的数据会消失,是不是应该保留?

1 个答案:

答案 0 :(得分:0)

您好,请尝试以下代码

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");
intent.putExtra(CURRENT_REQUEST_CODE_TAG, getTargetRequestCode());
startActivityForResult(intent, ADD_SIGNAL_REQUEST_CODE);

现在覆盖调用上面代码

的片段中的onActivityResult方法