5

ビットマップ オブジェクトではなく、サムネイルパスを取得しようとしています。
これらをクエリすると、サムネイル パスの一部が何らかの理由で null になります。(私のデバイスには 1028 個のサムネイル画像があります。カーソルの長さは確かに 1028 ですが、それでも null が返されます) チェックしたので、1028 個のサムネイル画像があることがわかりました。これが私のコードです:

     String[] projection = {MediaStore.Images.Thumbnails._ID};
  // Create the cursor pointing to the SDCard

  cursor = this.getContentResolver().query( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
          projection, // Which columns to return
          null,       // Return all rows
          null,
          MediaStore.Images.Thumbnails.IMAGE_ID);
  // Get the column index of the Thumbnails Image ID
  Log.d(Global.TAG, "BEFORE");
  columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID);
  Log.d(Global.TAG, "AFTER1");
  for(int i =0;i<cursor.getCount();i++){
      cursor.moveToPosition(i);

      Log.d("MyTag","BBABA" + i +" : " + getThumbnailPathForLocalFile(cursor.getLong(columnIndex)));
  }
  cursor.close();

私の getThumbnailPathForLocalFile:

    String getThumbnailPathForLocalFile(long fileId)
 {
    // Log.d(Global., msg)
     Cursor thumbCursor = null;
     try
     {
         thumbCursor = this.getContentResolver().
                 query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI
                 , null
                 , MediaStore.Images.Thumbnails.IMAGE_ID + " = " + fileId+ " AND "
                   + MediaStore.Images.Thumbnails.KIND + " = "
                   + MediaStore.Images.Thumbnails.MINI_KIND , null, null);

         if(thumbCursor.moveToFirst())
         {
             // the path is stored in the DATA column
             int dataIndex = thumbCursor.getColumnIndexOrThrow( MediaStore.MediaColumns.DATA );
             String thumbnailPath = thumbCursor.getString(dataIndex);
             return thumbnailPath;
         }
     }
     finally
     {
         if(thumbCursor != null)
         {
             thumbCursor.close();
         }
     }

     return null;
 }

これが私のlogcatです: http://pastebin.com/UZLZF9Pg

確認したところ、送信した ID が for ループのインデックスと同じであることがわかりました。私のコードが機能するかどうかさえわからないので、他のコードは素晴らしいでしょう。

4

1 に答える 1