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

时间:2011-01-20 03:35:54

标签: android image media

我有一个应用程序可以查询MediaStore并显示库中的所有图像。简单。它适用于我的Nexus S,Droid X和各种版本的仿真器。然而,它给我的Friends 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;

...然后它返回的图像几乎是图库中的两倍,但大多数都没有缩略图图像。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

根据文档,SenseUI手机并不都是缩略图。其中一些只做MICRO_KIND缩略图 - 我记得Incredible做同样的事情。为了让我以前工作的图像应用程序正常工作,我不得不查询两种缩略图,甚至有时会自己滚动。