获取所有Android设备图片

时间:2015-10-27 21:28:57

标签: android android-cursor

我需要根据添加的日期获取我的Android设备的所有图像,所以我尝试了以下代码:

String[] projection = new String[]{
    MediaStore.Images.ImageColumns._ID,
    MediaStore.Images.ImageColumns.DATA,
    MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
    MediaStore.Images.ImageColumns.DATE_TAKEN,
    MediaStore.Images.ImageColumns.MIME_TYPE};
mImageCursor = getContentResolver().query(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    projection,
    null,
    null,
    MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
mImageCursor.moveToFirst();

它在大多数设备上运行良好,但问题出现在Nexus 5上,我听说它崩溃了。不幸的是我没有Nexus 5检查日志,但我认为这可能是因为Nexus 5没有SD卡,我是对的吗?解决方案是什么?

1 个答案:

答案 0 :(得分:1)

从Android 5.0开始,对于某些READ_EXTERNAL_STORAGE操作,您需要MediaStore,如果targetSdkVersion为23或更高,则需要从Android 6.0开始,这需要您使用运行时许可制度。具体而言,您需要使用requestPermissions()来提示用户授予您从外部存储读取的权限,因为这被视为dangerous权限。

如果您的targetSdkVersion为22或更低,并且Android 6.0用户通过“设置”应用手动撤消了您的READ_EXTERNAL_STORAGE权限,我不太确定{{1}的行为是什么因为我还没有尝试过那个特定的场景。