代码之家  ›  专栏  ›  技术社区  ›  skysign

我可以从图像文件的名称中获取其URI吗?

  •  13
  • skysign  · 技术社区  · 16 年前

    有一些图像文件,我想获取这些图像文件的URI。 在我的代码中,我只知道图像文件的路径和文件名。 如何从其路径和文件名中获取URI?

    2 回复  |  直到 13 年前
        1
  •  42
  •   Erich Douglass    16 年前

    如果你有 File ,您始终可以将其转换为 URI 以下内容:

    File file = new File(path + File.pathSeparator + filename);
    URI uri = file.toURI();
    

    或者,如果要使用Android URI类:

    Uri uri = Uri.fromFile(file);
    
        2
  •  2
  •   Jinal Jogiyani    13 年前

    我对我的文件资源管理器活动有同样的问题…但是你应该知道文件的content uri只支持媒体存储数据,如图像、音频和视频…我给你从SD卡中选择图像来获取图像内容uri…试试这个代码…也许它对你有用…

    public static Uri getImageContentUri(Context context, File imageFile) {
            String filePath = imageFile.getAbsolutePath();
            Cursor cursor = context.getContentResolver().query(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                    new String[] { MediaStore.Images.Media._ID },
                    MediaStore.Images.Media.DATA + "=? ",
                    new String[] { filePath }, null);
            if (cursor != null && cursor.moveToFirst()) {
                int id = cursor.getInt(cursor
                        .getColumnIndex(MediaStore.MediaColumns._ID));
                Uri baseUri = Uri.parse("content://media/external/images/media");
                return Uri.withAppendedPath(baseUri, "" + id);
            } else {
                if (imageFile.exists()) {
                    ContentValues values = new ContentValues();
                    values.put(MediaStore.Images.Media.DATA, filePath);
                    return context.getContentResolver().insert(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
                } else {
                    return null;
                }
            }
        }