我在这里和那里看到的大多数提示用户选择文件或图像的代码片段,让 onActivityResult方法使用类似下面的函数来获取所选的文件路径。
我的问题是为什么要经历这一切,当Uri准备好使用函数 Uri.getPath()时?在一种方法或另一种方法中是否存在优点或缺点?
onActivityResult代码
Uri source = data.getData();
String fileName=getRealPathFromURI(this, source);
获取路径功能
public static String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
当我从dropbox中选择文件/图像时,我实际上使用getRealPathMethod使我的应用程序崩溃...而使用Uri.getPath()方法我没有任何问题。那么......这里的交易是什么?我错过了什么吗?
答案 0 :(得分:0)
尝试这样
final String [] consDirNames = new String[constDir.length];
// directory names
for(int i=0;i<constDir.length;i++){
consDirNames[i]=constDir[i].getName();
File booths[]= constDir[i].listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
return pathname.getName().endsWith(".pdf");
}
}); ;
consDirMap.put(consDirNames[i], booths);
fileMap.put(consDirNames[i],constDir[i].getAbsolutePath() );
}