我会尽量保持简单。
我正在开发应用,该应用包含要提交的检查清单。部分检查清单需要上传文件。 我知道如何序列化和上传文件,但我需要首先获取这些文件。
代码如下
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>
我做错了什么? 我无法读取和序列化文件,是否必须以不同方式解析文件? 我知道我可以抓取不同的图像,但我也需要二进制文件,所以请不要告诉我使用图库应用程序。
提前致谢。
答案 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!
}
文件对象现在可以轻松找到文件