2014-04-02 35 views
0

我正在使用網格視圖來顯示我的圖庫圖像,但其中幾乎沒有顯示任何東西。當我打開Facebook應用程序,去圖像發佈,它也顯示這些空白圖像,但是當我試圖選擇它顯示消息「無法讀取文件,它可能會損壞。」如何在gridview中顯示時獲取損壞的圖像

我該怎麼做?

  final String[] columns = { MediaStore.Images.Media.DATA, 
       MediaStore.Images.Media._ID }; 
     final String orderBy = MediaStore.Images.Media._ID; 
     Cursor imagecursor = managedQuery(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, 
       null, null, orderBy); 
     int image_column_index = imagecursor 
       .getColumnIndex(MediaStore.Images.Media._ID); 
     count = imagecursor.getCount(); 
     thumbnails = new Bitmap[count]; 
     arrPath = new String[count]; 
     thumbnailsselection = new boolean[count]; 
     for (int i = 0; i < count; i++) { 
      try { 
       imagecursor.moveToPosition(i); 
       int id = imagecursor.getInt(image_column_index); 
       int dataColumnIndex = imagecursor 
         .getColumnIndex(MediaStore.Images.Media.DATA); 
       thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(
         getApplicationContext().getContentResolver(), id, 
         MediaStore.Images.Thumbnails.MICRO_KIND, null); 

       arrPath[i] = imagecursor.getString(dataColumnIndex); 

       onProgressUpdate(String.valueOf(id)); 

      } catch (Exception e) { 

      } 
     } 

這裏是我在doInBackground()中使用的代碼;

謝謝你的幫助。

+0

只需刷新您的圖庫項目。 –

+0

@ Harshit Rathi我做到了,但這不起作用,無論在臉書上。 – Ankit

+0

是您的畫廊顯示正確的項目。 –

回答

1

這一行清爽畫廊項務實

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(new File(filePath)))); 

,而不是更新的一些文件你剛剛從SD卡和Android的畫廊刪除即一次設備不能夠獲取該圖像,以便U可以將發生嘗試用這種 對於圖像

private void getallimages(File dir) 
    { 

    String[] STAR = { "*" }; 
    controller.images.clear(); 

    final String orderBy = MediaStore.Images.Media.DEFAULT_SORT_ORDER; 
    Cursor imagecursor = cntx.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, STAR, null, null, orderBy); 
    int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); 
    int count = imagecursor.getCount(); 
    for (int i = 0; i < count; i++) { 
     imagecursor.moveToPosition(i); 
     int id = imagecursor.getInt(image_column_index); 
     ImageItem imageItem = new ImageItem();//this is my wrapper class 
     if(new File(imagecursor.getString(imagecursor.getColumnIndex(MediaStore.Images.Media.DATA))).length()<=10485760) 
     { 
      imageItem.filePath = imagecursor.getString(imagecursor.getColumnIndex(MediaStore.Images.Media.DATA)); 

     imageItem.id = id; 
     imageItem.selection = false; //newly added item will be selected by default this it do for check box unselect u dont need to fill this 
     controller.images.add(imageItem);//this i just add all info in wrapper class  

     } 
} } 

如果它不會從這個來也是那麼只打印東西給用戶:)

when u try to fetch or open that image then just give one condition like i try to open that image and if it is not present then toast for it that this image might be corrupt or not present in sdcard 
+0

我更新了我的代碼,當我使用你的過濾方法時,沒有圖像顯示在網格中。 – Ankit

+0

像你的dint得到了甚至所有有效的圖像也 –

+0

只要你打電話給那個方法,那麼你必須通過文件dir = Environment.getExternalStorageDirectory(); ....有你傳遞這個路徑花花公子 –

1

如果您的圖庫項目顯示不正確,那麼它可能不在SD卡中,因此您必須刷新圖庫項目。刷新請按照這個link