2014-06-30 11 views
6

मैं अपने आवेदन के लिए कस्टम छवि गैलरी पर काम कर रहा हूं लेकिन मुझे सैमसंग गैलेक्सी एस 4 और एस 5 के तहत एक गंभीर समस्या मिली है। निम्नलिखित कोड एचटीसी और एक्सपीरिया उपकरणों पर बहुत अच्छा काम करता है लेकिन सैमसंग पर बिल्कुल नहीं।एंड्रॉइड - गैलरी छवियां प्राप्त करें सैमसंग एस 4/एस 5

असल में, इन उपकरणों पर पैट हमेशा null होते हैं। यहां दिया गया कोड है। बड़ी लाइनों में, यह नामों और छवियों की एक सूची वाली श्रेणियों की एक सूची देता है। इसका लक्ष्य मूल फ़ोल्डर की तरह एक फ़ोल्डर आधारित गैलरी प्रदान करना है।

क्या आपको पता होना चाहिए कि यह सैमसंग गैलेक्सी पर क्यों विफल रहता है?

आपकी मदद के लिए धन्यवाद।

public List<Category> getCategories() 
{ 
    Map<String, Category> map = new HashMap<String, Category>(); 

    String[] projection = new String[] { 
     MediaStore.Images.Media._ID, 
     MediaStore.Images.Media.BUCKET_DISPLAY_NAME, 
    }; 

    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media.DATE_TAKEN + " DESC"); 
    if (cursor == null) return; 

    if (cur.moveToFirst()) 
    { 
     Category category = null; 
     long id = 0L; 
     String bucket = null;; 
     int idColumn = cur.getColumnIndex(MediaStore.Images.Media._ID); 
     int bucketColumn = cur.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); 

     do 
     { 
      id = cur.getLong(idColumn); 
      bucket = cur.getString(bucketColumn); 

      if (map.get(bucket) == null) 
      { 
       category = new Category(bucket); 
       map.put(bucket, category); 
      } 
      category = map.get(bucket); 

      category.addImage(idToImage(id)); 
     } 
     while (cur.moveToNext()); 
    } 

    return map.values().toArray(); 
} 

private Image idToImage(long id) 
{ 
    Image image = new Image(); 

    image.setThumbnail(getThumbnail(id)); 
    image.setImage(getImage(id)); 

    return image; 
} 

private String getThumbnail(long id) 
{ 
    String path = null; 
    Cursor cursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(getContentResolver(), id, MediaStore.Images.Thumbnails.MINI_KIND, null); 
    if(cursor != null && cursor.getCount() > 0) 
    { 
     cursor.moveToFirst(); 
     path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA)); 
     cursor.close(); 
    } 

    return path; 
} 

private String getImage(long id) 
{ 
    String path = null; 
    String[] projection = {MediaStore.Images.Media.DATA}; 
    String where = MediaStore.Images.Media._ID + " = " + id; 
    Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, where, null, null); 
    int dataColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA); 
    if(cursor != null && cursor.getCount() > 0) 
    { 
     cursor.moveToFirst(); 
     path = cursor.getString(dataColumn); 
    } 
    return path; 
} 

उत्तर

0

यह

/** 
* Get actual file path from gallery 
*/ 
public String getPath(Uri uri, Context ctx) { 
    String[] projection = {MediaStore.Images.Media.DATA}; 
    String result; 
    Cursor cursor = ctx.getContentResolver().query(uri, projection, null, null, null); 
    if (cursor == null) { 
     return null; 
    } 
    int column_index = cursor 
      .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    result = cursor.getString(column_index); 
    cursor.close(); 
    return result; 
} 
+0

काम करेंगे S7 पर नहीं काम करता है – djdance

संबंधित मुद्दे