首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到android镜像的路径并从Uri创建文件

如何找到android镜像的路径并从Uri创建文件
EN

Stack Overflow用户
提问于 2017-04-11 22:13:19
回答 2查看 7.1K关注 0票数 0

我在将Uri路径转换为URI(创建文件)时遇到问题。

我的代码是:

代码语言:javascript
复制
private void uploadImageToServer(Uri path){
    String[] filePathColumn = {MediaStore.Images.Media.DATA};

    android.database.Cursor cursor = getContentResolver().query(path, filePathColumn, null, null, null);
    if (cursor == null)
        return;

    cursor.moveToFirst();

    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String filePath = cursor.getString(columnIndex);
    cursor.close();

    File file = new File(filePath);
}

然而,我的游标是空的。

我在函数中的"Uri路径“参数是:file:///storage/emulated/0/Pictures/MyApp/IMG_20170411_170952.jpg

我遵循的是这个教程:https://medium.com/@adinugroho/upload-image-from-android-app-using-retrofit-2-ae6f922b184c

EN

回答 2

Stack Overflow用户

发布于 2017-04-11 23:21:20

试一试,我强烈建议不要使用

代码语言:javascript
复制
content:// 

只需将其用作

代码语言:javascript
复制
content:

String imagePath = "";
Uri targetUri = data.getData();
        if (data.toString().contains("content:")) {
            imagePath = getRealPathFromURI(targetUri);
        } else if (data.toString().contains("file:")) {
            imagePath = targetUri.getPath();
        } else {
            imagePath = null;
        }


 public String getRealPathFromURI(Uri contentUri) {
    Cursor cursor = null;
    try {
        String[] proj = {MediaStore.Images.Media.DATA};
        cursor = 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();
        }
    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-04-11 22:20:55

代码语言:javascript
复制
My "Uri path" parameter from function is: 
file:///storage/emulated/0/Pictures/MyApp/IMG_20170411_170952.jpg

那么你想要的路径是

代码语言:javascript
复制
/storage/emulated/0/Pictures/MyApp/IMG_20170411_170952.jpg

代码

代码语言:javascript
复制
private void uploadImageToServer(Uri uri){
   String filePath = uri.toString().replace("file://", "" );

   File file = new File(filePath);
}

也许您甚至可以直接使用uri.getPath()。请查收。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43348489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档