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

Rob*_*ert 5 android android-intent

我的问题很简单。是否有可能以某种方式传递额外数据Intent.ACTION_GET_CONTENT,其中Activity接收的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);
Run Code Online (Sandbox Code Playgroud)

正如我所说,当我在我的活动中获得意图时,额外的数据就消失了。是否有某种方法可以标记或设置意图,以便保留额外的数据或我遗漏的其他内容?

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

谢谢!

更新

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    int currentRequestCode = data.getIntExtra(CURRENT_REQUEST_CODE_TAG, -1);
}
Run Code Online (Sandbox Code Playgroud)

在我的 onActivityForResult() 中,getIntExtra()总是返回默认值 -1,而不是我配置意图的默认值,它应该是值 9 或 10。这告诉我额外的数据已经丢失,并且数据对象的调试证实了我的怀疑,intent 参数不包含任何额外的数据。

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

Kev*_*ain 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);
Run Code Online (Sandbox Code Playgroud)

现在重写您调用上述代码的片段中的 onActivityResult 方法