android - 获取所有 Android 设备图像

标签 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 卡,对吗?解决方案是什么?

最佳答案

从 Android 5.0 开始,您需要 READ_EXTERNAL_STORAGE 进行一些 MediaStore 操作,从 Android 6.0 开始,如果您的 targetSdkVersion 为 23 或更高,这需要您使用运行时权限系统。具体来说,您需要使用 requestPermissions() 来提示用户授予您从外部存储读取的能力,因为这被认为是一个危险权限。

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

关于android - 获取所有 Android 设备图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33378810/

相关文章:

android - 如何找到一个 GPS 点是否位于给定的一组开始和结束 GPS 位置?

android - 如何强制我的应用程序移动到前台?

android - 在 Android 应用程序的 Youtube 直播中获取音频问题

java - 光标为空,给出 NPE

android - 如何修复 Android studio 3.5 导航 Activity 模板 onNavigationItemSelected 不起作用

android - 为什么 logcat 会耗尽消息

android - 如何编写sqlite查询来获取特定数据?

android - 按姓名搜索联系人

java - 如何在android中从光标处检索图像?获取 ImageView ?

android - ContentObserver 可以与新的 RecyclerView notifyItem 函数一起使用吗?