从意图返回的android解析文件路径

时间:2015-12-03 14:17:05

标签: java android

我会尽量保持简单。

我正在开发应用,该应用包含要提交的检查清单。部分检查清单需要上传文件。 我知道如何序列化和上传文件,但我需要首先获取这些文件。

代码如下

public void getFile(View v)
{
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType("file/*");
    startActivityForResult(intent, 1337);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    String Fpath;
    if(data!=null)
    {
        Fpath = data.getDataString();
        File test = new File(Fpath);
        if(test.exists())
            Log.v(LOG_TAG,"size: "+test.length());
        else
            Log.v(LOG_TAG,"does not exist:"+test.length());

    }
    else
    Fpath = "empty";
    Log.v(LOG_TAG,"Path: "+Fpath);
    Log.v(LOG_TAG,"Request Code: "+requestCode);
    Log.v(LOG_TAG, "Result Code: " + resultCode);
    super.onActivityResult(requestCode, resultCode, data);
}

上述代码会产生一些有趣的结果 结果是:

Selecting an image<br>
does not exist:0<br>
Path: content://media/external/images/media/10857 <br>
Request Code: 1337 <br>
Result Code: -1<br>

Selecting a binary file<br>
does not exist:0<br>
Path: file:///storage/emulated/0/Download/ACSSE_IT00137_2015_LG.pdf <br>
Request Code: 1337 <br>
Result Code: -1 <br>

我做错了什么? 我无法读取和序列化文件,是否必须以不同方式解析文件? 我知道我可以抓取不同的图像,但我也需要二进制文件,所以请不要告诉我使用图库应用程序。

提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,我找到了我错过的东西

android意图返回一条额外的信息,就像意图一样 file:///storage/emulated/0/Download/ACSSE_IT00137_2015_LG.pdf

返回字符串的前7个字符是文件意图,或者至少我认为它就是它。

String Fpath = data.getDataString();
String abspath = Fpath.substring(7);

File test = new File(abspath);
if(test.exists())
{
    //serialize it!
}

文件对象现在可以轻松找到文件