6
我正在爲我的應用程序定製圖像庫,但我在Samsung Galaxy S4和S5下遇到了嚴重問題。下面的代碼在宏達電和Xperia設備上很好用,但在三星電腦上完全沒有。Android - 獲取圖庫圖像Samsung S4/S5
基本上,這些設備上的路徑總是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;
}
在S7沒有作品 – djdance