【问题标题】:how to view image through image id in android如何在android中通过图像ID查看图像
【发布时间】:2013-06-08 09:06:23
【问题描述】:

我在 MediaStore 中获得了图像 ID。如何使用 id 查看图库中的图像? 我目前使用以下代码:

    ContentResolver cr = context.getContentResolver();

    String columns[] = new String[]{  
        Media._ID, Media.DATA
    };
    Cursor cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, Media._ID+"=?", new String[]{id+""}, null);
    if(cursor.moveToNext()) {
        String imagePath = cursor.getString(cursor.getColumnIndex(Media.DATA));
        Uri imageUri = Uri.fromFile(new File(imagePath));

        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.addCategory(android.content.Intent.CATEGORY_DEFAULT);
        intent.setDataAndType(imageUri, "image/*");
        ((Activity)context).startActivity(intent);
    }

它可以工作,但它太麻烦了。我认为应该有一种更简单的方法来做到这一点。关键是从图片id中获取图片Uri。

【问题讨论】:

    标签: java android uri android-contentresolver mediastore


    【解决方案1】:
    int imageID = cursor.getInt( cursor.getColumnIndex(MediaStore.Images.Media._ID) ); 
    
    Uri uri = Uri.withAppendedPath( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID) );
    

    要从 id 获取 Uri,请使用此代码。

    private void getPhoneGalleryImages() {
    
        Cursor cursor = cr.query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
                null, null);
        cr = getActivity().getContentResolver();
        if(cursor != null)
        {
            if (cursor.moveToFirst()) {
                do {
                    String id = cursor.getString(cursor
                            .getColumnIndex(MediaStore.Images.Thumbnails._ID));
                    String path = cursor.getString(cursor
                            .getColumnIndex(MediaStore.Images.Media.DATA));
                } while (cursor.moveToNext());
            }
            cursor.close();
        }
    }
    

    【讨论】:

    • Uri uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID));这正是我所需要的。非常感谢!
    • 我认为你使用 long imageId = blah... 但这回答了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多