为什么我不能在画廊看到我的一些照片?

时间:2014-08-20 15:28:31

标签: android cursor sd-card mediastore

我试图用MediaStore.Images.Media.DATA读取SD卡中存在的照片,但我总是得到一个空光标! 这是我用于阅读的代码:

final String[] columns = { MediaStore.Images.Media.DATA, 
    MediaStore.Images.Media._ID };

Cursor imagecursor = getContentResolver()
    .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, 
    MediaStore.Images.Media.DATA + " like ? ", 
    new String[] { "%"+eventName.trim()+"%" }, null);

imagecursor.setNotificationUri(getContentResolver(), 
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

this.imageUrls = new ArrayList<String>(); 
Log.i("imagecursor.getCount()", Integer.toString(imagecursor.getCount()));

for (int i = 0; i < imagecursor.getCount(); i++) {
    imagecursor.moveToPosition(i);
    int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA);
    imageUrls.add(imagecursor.getString(dataColumnIndex));
}

当然我添加了这个

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

到AndroidManifest.xml

2 个答案:

答案 0 :(得分:0)

我发现问题出在媒体扫描仪上,所以我解决了它使用一个名为Scan Media的简单应用程序扫描外部存储,然后MediaStore将能够找到新的元素。

答案 1 :(得分:-1)

我不知道这对你有帮助,但我在帮助你

String ExternalStorageDirectoryPath = Environment.getExternalStorageDirectory()
    .getAbsolutePath();

String targetPath = ExternalStorageDirectoryPath + "/yoururl/";

Toast.makeText(getActivity(), targetPath, Toast.LENGTH_LONG).show();
File targetDirector = new File(targetPath);

File[] files = targetDirector.listFiles();
for (File file : files){
    myImageAdapter.add(file.getAbsolutePath());
}      

在这个例子中,我得到图像并在网格视图中显示