Obtenir des images miniature chemins d'accès aux fichiers

Je vais essayer d'obtenir les thumnail chemins, pas les images des objets.

Quand j'ai une requête pour ces, certains de la vignette chemins sont nuls pour une raison quelconque.
(J'ai 1028 images miniatures dans mon appareil, le curseur de la longueur est, en effet, 1028, mais encore de retour null) je sais qu'il y a 1028 images miniatures parce que j'ai vérifié.
Voici mon code:

     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();

Mon 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;
 }

Voici mon logcat:
http://pastebin.com/UZLZF9Pg

Après vérification, je vois que les id-je l'envoyer sont comme l'indice de la boucle for.
Je ne suis même pas sûr que mon code est censé fonctionner, de sorte que n'importe quel autre code sera grande.

  • Pourquoi avez-vous réglé votre PROJECTION de MediaStore.Les Images.Les vignettes._ID et pas MediaStore.Les Images.Les vignettes.Les DONNÉES?
  • Je ne suis pas sûr. Je crois que j'ai pris cet exemple quelque part.Pensez-vous qu'il peut résoudre le problème? De toute façon, c'est irrelavant déjà.
  • Je suis a été demandé parce que j'ai utilisé {MediaStore.Les Images.Les vignettes.DONNÉES}, comme dans la solution, et cela a fonctionné. J'étais donc curieux de savoir si vous avez eu une approche différente.
  • Heu, si tu aurais m'a dit qu'il y a quelques mois, vous pourriez résoudre moi tant de questions.. 🙁
InformationsquelleAutor idish | 2013-08-11