2013-08-11 6 views
5

Ich versuche, die Thumnail Pfade, nicht die Bitmaps Objekte zu bekommen.
Wenn ich nach diesen abfrage, sind einige der thumbnail-Pfade aus irgendeinem Grund null. (Ich habe 1028 Miniaturansichten in meinem Gerät, die Cursor-Länge ist in der Tat 1028, aber immer noch NULL) Ich weiß, dass es 1028 Miniaturbilder gibt, weil ich überprüft habe. Hier ist mein Code:Get Bilder Miniaturbild-Pfade

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

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

mein logcat hier: http://pastebin.com/UZLZF9Pg

Nach der Überprüfung, wie ich sehe, dass die IDs Ich schicke wie der Index des für Schleife. Ich bin nicht einmal sicher, ob mein Code funktionieren soll, also wird jeder andere Code großartig.

+1

Warum haben Sie setzen Ihre PROJECTION auf MediaStore.Images.Thumbnails._ID und nicht MediaStore.Images.Thumbnails.DATA? –

+0

@IgorGanapolsky Ich bin mir nicht sicher. Ich denke, ich habe dieses Beispiel irgendwo genommen. Meinst du, es könnte das Problem lösen? Wie auch immer, es ist schon irrelevant. – idish

+0

Ich habe gefragt, weil ich {MediaStore.Images.Thumbnails.DATA} verwendet habe, genau wie in der Lösung, und es hat funktioniert. Also war ich neugierig, ob Sie einen anderen Ansatz hatten. –

Antwort

11

Sie sollten für MediaStore.Images.Thumbnails.DATA abfragen. Um Ihr Beispiel zu ändern, würde es so aussehen.

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

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

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

Referenz: How to get imagepath from thumbnail path of a image?

+0

Das ist großartig, funktioniert !!! Vielen Dank, ich habe so viel nach dieser Lösung gesucht :) – idish

+0

Hey, hoffentlich könntest du mir mit einer weiteren kleinen Frage weiterhelfen: Ich habe gerade alle meine Bilder aus der Galerie entfernt und dann ungefähr 12 Bilder mit der Kamera aufgenommen. Danach betrat ich die Galerie und sah die Vorschaubilder schön angezeigt. Als ich jedoch meine App zur Anzeige dieser Thumbnails eintrug, sehe ich keine. Nach dem Blick in den Ordner .Thumbnails im DCIM gibt es überhaupt keine JPG-Dateien, sondern nur eine seltsame Datei, die 10,9 MB wiegt. Weißt du, warum in meinem .Thumbnails-Ordner meine Miniaturbilder nicht angezeigt werden? – idish

+0

@idish Bitte öffnen Sie das als separate Frage und geben Sie mehr Details (wie heißt die "Weird-Datei"), auch Telefondetails und OS-Version. – yogurtearl