新文件(uri.toString())返回未找到的文件

时间:2012-09-04 14:31:44

标签: android file uri

我有一个URI,我想从这个URI创建一个文件:

fileUri = file:///mnt/sdcard/20120904_162830.png;

File fichero = new File(fileUri.toString();

这很好但是当我尝试创建使用或fichero.exist() = false

如何从此fileUri创建文件?

解决方案:

fichero = new File(fileUri.getPath());//for camera
                    if (!fichero.exists()) {
                        fichero = new File(getRealPathFromURI(fileUri));//for gallery
                    }


public String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        @SuppressWarnings("deprecation")
        Cursor cursor = managedQuery(contentUri, proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }

3 个答案:

答案 0 :(得分:1)

试试这个:

File fichero = new File(fileUri.getPath());

答案 1 :(得分:0)

File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
File output = new File(dir,"20120904_162830.png");

将此权限添加到清单...

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

编辑:

String filename= output.getAbsolutePath();
filename= str.subString(str.indexOf("/"),str.length());

答案 2 :(得分:0)

这是解决方案

fileUri = "file:///mnt/sdcard/20120904_162830.png";

URI fUri = new URI(fileUri);

File fichero = new File(fileUri.getPath());

仅当您未在fileUri

中提供任何网址时,此功能才有效