最近写了个自定义相册模块,其中比较核心的算是查询照片了,直接上代码吧

val contentUri = MediaStore.Files.getContentUri("external")

val sortOrder = MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC"

val selection =

"(${MediaStore.Files.FileColumns.MEDIA_TYPE} = ? OR ${MediaStore.Files.FileColumns.MEDIA_TYPE} = ?) AND ${MediaStore.MediaColumns.SIZE} > 0"

val selectionAllArgs = arrayOf(MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE.toString())

val projections = arrayOf(

MediaStore.Files.FileColumns._ID,

MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.DISPLAY_NAME,

MediaStore.MediaColumns.DATE_MODIFIED, MediaStore.MediaColumns.MIME_TYPE,

MediaStore.MediaColumns.WIDTH, MediaStore.MediaColumns.HEIGHT,

MediaStore.MediaColumns.SIZE, MediaStore.Video.Media.DURATION

)

val cursor = context.contentResolver.query(contentUri, projections, selection, selectionAllArgs, sortOrder) ?: return

if (cursor.moveToFirst()) {

val idCol = cursor.getColumnIndex(MediaStore.MediaColumns._ID)

val pathCol = cursor.getColumnIndex(MediaStore.MediaColumns.DATA)

val nameCol = cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME)

val mimeType = cursor.getColumnIndex(MediaStore.MediaColumns.MIME_TYPE)

do {

val id = cursor.getString(idCol)

//这里得到path其实就可以利用glide来显示照片了,但还是建议用uri

val path = cursor.getString(pathCol)

val name = cursor.getString(nameCol)

val type = cursor.getString(mimeType)

//过滤gif

if (name.endsWith(".gif", true)) {

continue

}

//过滤视频

if (type.contains("video")) {

continue

}

val file = File(path)

if (!file.exists() || !file.isFile) {

continue

}

//这里拿到uri

val uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id)

//这里可以对照片进行分类操作,

...

} while (cursor.moveToNext())

}

cursor.close()

数据库查询要放到工作线程处理,而且别忘了申请外部存储读写权限

android查询所有照片,Android查询外部存储中所有照片相关推荐

  1. android 存储无法写入,在Android中的外部存储中写入文件

    我想在外部存储sdCard中创建一个文件并写入它.我已经通过互联网搜索并尝试但没有得到结果,我已经在Android Manifest文件中添加了权限,我在模拟器上这样做,我正在尝试下面的代码和获取ER ...

  2. Android实训日志:基于外部存储的音乐播放器V06

    目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable和mipmap 创建按钮背景图片选择器 在项目清单文件里授权访问外置存储卡,设置应用程序图标 创建anim包里面创建animato ...

  3. Android实训日志:基于外部存储的音乐播放器V04

    文章目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable 按钮背景图片选择器 在项目清单文件里设置安卓应用的图标和授权访问外置存储卡 主布局资源文件activity_main.xml ...

  4. Android 实训日志:基于外部存储的音乐播放器V03

    文章目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable 按钮背景图片选择器 在项目清单文件里设置安卓应用的图标和授权访问外置存储卡 主布局资源文件activity_main.xml ...

  5. Android系统(127)---Android6.0存储中加入总内存和系统内存项和在西语下把,换成.

    Android6.0存储中加入总内存和系统内存项 阅读数:651 平台下patches/packages/apps/Settings/里面 1.存储中加入总内存和系统内存项 在 res/values- ...

  6. android存储文件数据恢复,安卓手机内置储存中的照片误删怎么恢复

    科技迅速发展随之而来的是人们生活习惯的改变,手机从一个简单的交流工具,变成生活中必备品,手机购物.手机支付.手机传送文件浏览网页.手机分享视频.手机拍照.手机里面满满的簇拥了太多的东西,定期清理的必然 ...

  7. Android 实训:日志(基于外部存储音乐播放器V01)

    项目功能 功能:播放存储卡指定目录里某一首音乐 实现步骤 创建安卓应用 将图片素材放入drawable 将音乐素材文件放入存储卡 找到sdk目录下的tools 打开montor.exe 将音乐素材放入 ...

  8. Android实训日志:基于外部存储的音乐播放器V05

    目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable 按钮图片选择器 编写主布局文件 编写字符串文件 创建音乐列表项模板music_name_list_item.xml 创建ui子包 ...

  9. java创建目录时带权限_java – 无法在外部存储中创建目录,尽管权限显然设置正确...

    我有 在我的清单文件中,但是尝试创建一个目录时我失败了 Log.d(LOG_STRING, android.os.Environment.getExternalStorageState() ); ja ...

最新文章

  1. 关于卡券系统设计--待续
  2. aspx ttf文件加载不出来_加载页面信息,刷不出来心态都崩了
  3. mysql ef 分布式事务_分布式事务系列--分布式跨库查询解决方案 mysql federated引擎的使用...
  4. AttributeError: ‘list‘ object has no attribute ‘ndim‘
  5. python更新excel内容_使用python将Excel表中的数据更新到数据库中
  6. Sort the Array
  7. 1947-2020 NBA总冠军次数排行榜
  8. python opencv3 特征提取与描述 DoG SIFT hessian surf
  9. 与 Netcraft 携手为 GlobalSign 的客户提供先进的保护措施以防止网站遭受恶意入侵和钓鱼攻击...
  10. C#中取得汉语拼音首字母
  11. 免费学java的网站_java免费学习网站推荐
  12. 算法学习第一天-搭建能运行算法第四版的代码
  13. 编译原理构造词法分析器C语言,编译原理C语言词法分析器
  14. WindowsNT/2000的系统日志文件
  15. python矩阵乘法和转置_python简单实现矩阵的乘,加,转置和逆运算示例
  16. matlab coder 4.0,利用MATLAB Coder将MATLAB代码生成C/C++代码
  17. 让你的工作变轻松的一套免费的 iPhone 手势图标
  18. java合并果子_经典题-提高组2004年 合并果子
  19. WIndows 7 拷贝XP的共享文件夹时,出现您需要权限来执行此操作 的提示
  20. Web3D开发者兼职副业平台推荐

热门文章

  1. android pss内存,如何释放android系统中pss cache住的内存
  2. English trip -- VC(情景课)2 D Reading
  3. bzoj 1058: [ZJOI2007]报表统计
  4. div里嵌套了img底部会有白块问题和图片一像素问题解决
  5. hadoop环境安装及简单Map-Reduce示例
  6. SQL Server中常用全局变量介绍
  7. linux编译动态库之fPIC
  8. 初识Buildroot
  9. android 7.1 apk的systemuid [2]
  10. Android Alarm自上而下 调试浅析