Sto lavorando a una galleria di immagini personalizzata per la mia applicazione, ma ho riscontrato un problema serio con Samsung Galaxy S4 e S5. Il seguente codice funziona perfettamente su dispositivi HTC e Xperia ma non su quelli Samsung.Android - Scarica immagini galleria Samsung S4/S5
Fondamentalmente, i percorsi sono sempre null
su questi dispositivi. Ecco il codice che ho creato. In linee grandi, restituisce un elenco di categorie contenenti un nome e un elenco di immagini. L'obiettivo è fornire una galleria basata su cartelle come quella nativa.
Se hai qualche idea del perché non funziona su Samsung Galaxy?
Grazie per il vostro aiuto.
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;
}
Sulla S7 non opere – djdance