我有一些图片存储在外部SD卡中,我想在GridView
中显示缩略图。我知道媒体扫描程序已经创建了缩略图,因为我可以使用标准的Gallery应用程序浏览我的图片文件夹,但我不知道这些缩略图的位置,所以我不知道如何将它们添加到我的GridView
我正在尝试使用缩略图:
MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong(_imageUri.getLastPathSegment()), type, null)
_imageUri
必须是内容架构Uri所以我的问题是找到一种方法将我的图像的文件架构Uris转换为内容架构Uris。不幸的是我不知道该怎么做。我已经看到很多SO线程建议使用Uri.parse()
,但它不起作用所以我正在寻找一个不同的解决方案。
我目前的做法是使用媒体扫描程序扫描单个文件,并尝试从Uri
回调中检索内容onScanCompleted
。代码是:
public class SimpleMediaScanner implements MediaScannerConnectionClient {
private MediaScannerConnection mMSC;
private File mFile;
private MyAdapter mAdapter;
public SimpleMediaScanner(Context c, File f, MyAdapter a) {
mAdapter = a;
mFile = f;
mMSC = new MediaScannerConnection(c, this);
mMSC.connect();
}
@Override
public void onMediaScannerConnected() {
mMSC.scanFile(mFile.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
// Store the content scheme Uri of the scanned file
// in a public field of the adapter
mAdapter.mThumbUri = uri;
mMSC.disconnect();
}
}
我从扩展的SimplecursorAdapter
:
SimpleMediaScanner sms = new SimpleMediaScanner(mContext, new File(filepath), this);
不幸的是,返回的mAdapter.mThumbUri
值始终为null
。有人能告诉我我做错了什么吗? TIA