我在外部SD卡中存储了一些图片,我想在GridView
中显示它们的缩略图。我知道媒体扫描器已创建缩略图,因为我可以使用标准的Gallery应用程序浏览我的图片文件夹,但我不知道这些缩略图位于哪里,因此我不知道如何将它们添加到我的GridView
。通过MediaScannerConnectionClient获取content-scheme Uri图像
我试图获得与缩略图:
MediaStore.Images.Thumbnails.getThumbnail(getContentResolver(), Long.parseLong(_imageUri.getLastPathSegment()), type, null)
的_imageUri
必须是内容开放的架构,所以我的问题是要找到我的图片的文件架构尤里斯转换为内容的一种方式-schema Uris。不幸的是我不知道该怎么做。我看到很多SO线程建议使用Uri.parse()
,但它不起作用,所以我正在寻找不同的解决方案。
我目前的做法是使用媒体扫描仪扫描各个文件,并尝试从onScanCompleted
回调中检索Uri
的内容。该代码是:
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
是的,我已经完成了,就像在问题中所说的那样。 – Vicent
哦,对不起,错过了那一行,我只看到下面的大代码块... – Ridcully