2011-01-20 84 views
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; 

...然後返回近一倍的「圖像」以外還有畫廊,但大多不具備的縮略圖。

任何想法?

+0

您可能遇到EVO固件中的錯誤。設備製造商有時會更改這些內容提供商的數據庫,並意外地造成不兼容。如果你可以創建一個示例項目來演示這個問題,並使源代碼在某處可用,我有興趣快速瀏覽它。 – CommonsWare 2011-01-20 03:43:18

回答

1

根據文檔,SenseUI手機並不都按照縮略圖進行操作。其中一些只做MICRO_KIND縮略圖 - 我記得Incredible也在做同樣的事情。爲了獲得我以前正在使用的圖像應用程序正常工作,我不得不查詢兩種縮略圖,甚至有時會滾動自己的縮略圖。

相關問題