【发布时间】:2013-08-12 21:13:05
【问题描述】:
我正在尝试获取缩略图路径,而不是位图对象。
当我查询这些时,某些缩略图路径由于某种原因为空。
(我的设备中有 1028 个缩略图,光标长度确实是 1028,但仍然返回空值)我知道有 1028 个缩略图,因为我检查过。
这是我的代码:
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();
我的 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;
}
这是我的日志: http://pastebin.com/UZLZF9Pg
检查后,我看到我发送的 id 就像 for 循环的索引一样。 我什至不确定我的代码是否应该工作,所以任何其他代码都会很棒。
【问题讨论】:
-
为什么将 PROJECTION 设置为 MediaStore.Images.Thumbnails._ID 而不是 MediaStore.Images.Thumbnails.DATA?
-
@IgorGanapolsky 我不确定。我想我在某个地方拿了那个例子。你认为它可以解决问题吗?无论如何,它已经无关紧要了。
-
我之所以问,是因为我使用了 {MediaStore.Images.Thumbnails.DATA},就像在解决方案中一样,并且它有效。所以我很好奇你是否有不同的方法。
-
呃,如果你几个月前告诉我,你可以解决我很多问题.. :(
标签: android path media thumbnails android-cursor