У меня есть приложение, которое запрашивает 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;
... тогда он возвращает почти вдвое больше «изображений», чемнаходятся в галерее, но большинство из них не имеют миниатюр изображений.
Есть идеи?