如何将其他意图值传递给ACTION_OPEN_DOCUMENT_TREE Intent

时间:2015-04-18 07:09:22

标签: android android-intent android-5.0-lollipop

我只是尝试通过ACTION_OPEN_DOCUMENT_TREE Intent传递一个额外的值,我无法管理它。我需要显示树对话框,因此用户可以选择一个文件夹,我必须传递一些额外的信息。我已经将这种传递机制与其他意图一起使用,并担心这对特殊意图ACTION_OPEN_DOCUMENT_TREE不起作用?!

我启动intent并传递值simplevalue如下:                       Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);

                  String sOperations="simplevalue";
                  intent.putExtra("simplevalue", sOperations);
                  startActivityForResult(intent, 42); 

我尝试接收如下的简单值:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    // if (requestCode == REQUEST_QUICKLIST) {
    if (resultCode == Activity.RESULT_OK) {

        if(requestCode==42){

            String simplevalue="";
            simplevalue=data.getStringExtra("simplevalue"); // <-- is null

            Bundle extras = data.getExtras(); // <- is null
            if(extras == null) {
                simplevalue= null;
            } else {
                simplevalue= extras.getString("simplevalue");
            }
调试时,

simplevalue和bundle extras为null。 如何使用ACTION_OPEN_DOCUMENT_TREE Intent传递一个简单的字符串?

3 个答案:

答案 0 :(得分:1)

在另一个课程中,你可以使用

获得simplevalue
 Intent intent = getIntent();
 String simplevalue = intent.getStringExtra("simplevalue");

答案 1 :(得分:1)

我认为传递给startActivityForResult的意图与调用onActivityResult的意图不同。因此,它不包含您指定的值。

我认为我们可以使用中间活动来管理它,该活动接受并存储通过intent传递的值并启动intent  Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE); 在onActivityResult中,您可以将存储的值放在结果意图中,并将其作为中间活动结果提供。

答案 2 :(得分:0)

后期输入,但也许会有用。要绕过意图,并仍然在您的simplevalue中访问您的onActivityResult,我建议您在活动中保留一个字典(可能由您自己决定),由请求代码作为键。例如,在:

Map<int, String> map = new HashMap<int, String>();
int nextOpenDocTreeCode = 43800;

在一定范围内(例如43800-43899)循环您的请求代码,在该范围内触发意图并将其放置在地图中:

map.put(nextOpenDocTreeCode++, "type of animal");
nextOpenDocTreeCode = (nextOpenDocTreeCode >= 43900) ? 43800 : nextOpenDocTreeCode;

然后在您的onActivityResult中进行检索:

simplevalue = map.get(requestCode);