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,但是为什么额外的数据消失了,不应该保留吗?
你好,尝试下面的代码
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 方法