2014-06-30 20 views
6

Uygulamam için özel bir resim galerisi üzerinde çalışıyorum ama Samsung Galaxy S4 ve S5 altında ciddi bir sorunum var. Aşağıdaki kod, HTC ve Xperia cihazlarda harika çalışıyor, ancak Samsung modellerinde hiç işe yaramıyor.Android - Fotoğraf galerisi görüntüler Samsung S4/S5

Temel olarak, bu aygıtlarda yollar her zaman null olur. İşte yaptığım kod. Büyük satırlarda, bir ad ve bir resim listesi içeren kategoriler listesi döndürür. Amaç, yerli gibi bir klasör tabanlı galeri sağlamaktır.

Samsung galaksisinde neden başarısız olduğuna dair bir fikriniz var mı?

Yardımlarınız için teşekkürler.

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

cevap

0

Değil eserler S7'de

/** 
* 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

çalışacak – djdance

İlgili konular