0
我有一个应用程序查询MediaStore并显示库中的所有图像。简单。它适用于我的Nexus S,Droid X和所有仿真器。但是,我的Friends Evo(2.2)给出了错误的结果。他只看到两张图片(在他的画廊中有100张)。下面是代码:MediaStore查询适用于大多数手机,但不适用于EVO
// 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);
..again,直截了当。这是我从几十个例子中拼凑出来的代码,基本上都是一样的。什么是EVO可能导致这不起作用。
如果我删除查询限制:
// Select only mini's
String selection = MediaStore.Images.Thumbnails.KIND + "=" + MediaStore.Images.Thumbnails.MINI_KIND;
...然后返回近一倍的“图像”以外还有画廊,但大多不具备的缩略图。
任何想法?
您可能遇到EVO固件中的错误。设备制造商有时会更改这些内容提供商的数据库,并意外地造成不兼容。如果你可以创建一个示例项目来演示这个问题,并使源代码在某处可用,我有兴趣快速浏览它。 – CommonsWare 2011-01-20 03:43:18