我使用MediaStore.Video.Thumbnails.getThumbnail()
方法来获取列表中显示的文件的缩略图。这在一开始工作得很好,但过了一段时间后,我得到的缩略图与文件不匹配。一旦GetThumbnail()
开始失败,它似乎只一次又一次地返回相同的位图,无论我尝试哪个文件。这发生在我的HTC愿望中,运行Android 2.2,并且很难重现--它会在一段时间后开始发生。
这是我的源代码的(一个精简版本):
static public Bitmap GetThumbnailForFile(File p_File, Activity
p_activity)
{
long imageID = GetImageID(p_File, p_activity);
if (imageID < 0)
{
return null;
}
return
MediaStore.Images.Thumbnails.getThumbnail(p_activity.getContentResolver(),
imageID, Thumbnails.MICRO_KIND, null);
}
public static long GetImageID(File p_File, Activity p_activity)
{
long result =-1;
Cursor c =
p_activity.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Images.Media._ID +""},
MediaStore.Images.Media.DATA +" like '" + p_File.getAbsolutePath(),
null, null);
c.moveToNext();
if (!c.isAfterLast())
{
result = c.getLong(0);
}
c.close();
return result;
}
我也在做同样的事情来加载视频缩略图。我使用了一些调试代码来检查GetImageID()返回的值,我非常确定它们是正确的。
有没有人知道我可能做错了什么?或者知道缩略图在一段时间后停止正常生成的原因吗?
发布于 2010-09-29 10:10:37
嗯,你的查询中有一个'like‘,而你只有一个’。此外,您不能保护您的查询免受SQL注入的影响!
我建议使用这样的查询:
p_activity.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[]{ MediaStore.Images.Media._ID +"" },
MediaStore.Images.Media.DATA + "=?",
new String[]{ p_File.getAbsolutePath() },
null);
也许这已经是问题所在了。
https://stackoverflow.com/questions/3820393
复制相似问题