Android MediaStore查询适用于大多数手机,但不适用于EVO

Android MediaStore查询适用于大多数手机,但不适用于EVO,android,image,media,Android,Image,Media,我有一个应用程序可以查询MediaStore并显示库中的所有图像。简单。它在我的Nexus S、Droid X和所有风格的模拟器上都能很好地工作。然而,它在我的朋友Evo(2.2)上给出了错误的结果。他只看到了两幅图像(在他的画廊里有100幅)。代码如下: // Where images are stored Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI; // The columns we wa

我有一个应用程序可以查询MediaStore并显示库中的所有图像。简单。它在我的Nexus S、Droid X和所有风格的模拟器上都能很好地工作。然而,它在我的朋友Evo(2.2)上给出了错误的结果。他只看到了两幅图像(在他的画廊里有100幅)。代码如下:

    // Where images are stored
    Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI;

    // The columns we want
    String[] projection = { MediaStore.Images.ImageColumns._ID, MediaStore.Images.Thumbnails.IMAGE_ID, MediaStore.Images.Thumbnails.KIND };

    // Select only mini's
    String selection = MediaStore.Images.Thumbnails.KIND + "=" + MediaStore.Images.Thumbnails.MINI_KIND;

    mCursor = this.managedQuery(uri, projection, selection, null, null);
    mCursor.moveToFirst();
    return mCursor;
相当简单和普通。这是ImageAdapter:

 View vi=convertView;
 ViewHolder holder;
 if(convertView==null){
        vi = inflater.inflate(R.layout.image_item, null);
        holder=new ViewHolder();
        holder.text=(TextView)vi.findViewById(R.id.text);;
        holder.image=(ImageView)vi.findViewById(R.id.image);
        vi.setTag(holder);
    }
    else {
        holder=(ViewHolder)vi.getTag();
    }
mCursor.requery();
mCursor.moveToPosition(position);

// Build the URI
int id = mCursor.getInt(mCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID));
Uri uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, "" + id);
    holder.image.setTag(uri);
    holder.image.setImageURI(uri);
…同样,直截了当。这是我从几十个例子中拼凑出来的代码,基本上都是一样的。EVO的哪些方面可能导致此功能失效

如果删除查询限制:

// Select only mini's
String selection = MediaStore.Images.Thumbnails.KIND + "=" + MediaStore.Images.Thumbnails.MINI_KIND;
…然后它返回的“图像”几乎是库中图像的两倍,但大多数图像没有缩略图


有什么想法吗?

根据文档,SenseUI手机并非都能制作缩略图。他们中的一些人只做微型的缩略图——我记得不可思议的是他们做了同样的事情。为了让我以前使用的图像应用程序正常工作,我必须查询这两种缩略图,有时甚至滚动我自己的缩略图。

您可能在EVO固件中遇到错误。设备制造商有时会更改这些内容提供商的基础数据库,并意外地造成不兼容。如果您可以创建一个示例项目来演示此问题,并在某处提供源代码,我将有兴趣快速浏览一下。我将尝试下面首先建议的几件事情:1)查询所有缩略图类型,2)制作我自己的缩略图。如果这不起作用,我将别无选择,只能把一个参考应用程序放在某个地方,它只需要我现在没有的1/2天,否则我就会上它。谢谢你的帮助。