android查询所有照片,Android查询外部存储中所有照片
最近写了个自定义相册模块,其中比较核心的算是查询照片了,直接上代码吧
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查询外部存储中所有照片相关推荐
- android 存储无法写入,在Android中的外部存储中写入文件
我想在外部存储sdCard中创建一个文件并写入它.我已经通过互联网搜索并尝试但没有得到结果,我已经在Android Manifest文件中添加了权限,我在模拟器上这样做,我正在尝试下面的代码和获取ER ...
- Android实训日志:基于外部存储的音乐播放器V06
目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable和mipmap 创建按钮背景图片选择器 在项目清单文件里授权访问外置存储卡,设置应用程序图标 创建anim包里面创建animato ...
- Android实训日志:基于外部存储的音乐播放器V04
文章目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable 按钮背景图片选择器 在项目清单文件里设置安卓应用的图标和授权访问外置存储卡 主布局资源文件activity_main.xml ...
- Android 实训日志:基于外部存储的音乐播放器V03
文章目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable 按钮背景图片选择器 在项目清单文件里设置安卓应用的图标和授权访问外置存储卡 主布局资源文件activity_main.xml ...
- Android系统(127)---Android6.0存储中加入总内存和系统内存项和在西语下把,换成.
Android6.0存储中加入总内存和系统内存项 阅读数:651 平台下patches/packages/apps/Settings/里面 1.存储中加入总内存和系统内存项 在 res/values- ...
- android存储文件数据恢复,安卓手机内置储存中的照片误删怎么恢复
科技迅速发展随之而来的是人们生活习惯的改变,手机从一个简单的交流工具,变成生活中必备品,手机购物.手机支付.手机传送文件浏览网页.手机分享视频.手机拍照.手机里面满满的簇拥了太多的东西,定期清理的必然 ...
- Android 实训:日志(基于外部存储音乐播放器V01)
项目功能 功能:播放存储卡指定目录里某一首音乐 实现步骤 创建安卓应用 将图片素材放入drawable 将音乐素材文件放入存储卡 找到sdk目录下的tools 打开montor.exe 将音乐素材放入 ...
- Android实训日志:基于外部存储的音乐播放器V05
目录 项目功能 实现步骤 创建安卓应用 将图片素材放入drawable 按钮图片选择器 编写主布局文件 编写字符串文件 创建音乐列表项模板music_name_list_item.xml 创建ui子包 ...
- java创建目录时带权限_java – 无法在外部存储中创建目录,尽管权限显然设置正确...
我有 在我的清单文件中,但是尝试创建一个目录时我失败了 Log.d(LOG_STRING, android.os.Environment.getExternalStorageState() ); ja ...
最新文章
- 关于卡券系统设计--待续
- aspx ttf文件加载不出来_加载页面信息,刷不出来心态都崩了
- mysql ef 分布式事务_分布式事务系列--分布式跨库查询解决方案 mysql federated引擎的使用...
- AttributeError: ‘list‘ object has no attribute ‘ndim‘
- python更新excel内容_使用python将Excel表中的数据更新到数据库中
- Sort the Array
- 1947-2020 NBA总冠军次数排行榜
- python opencv3 特征提取与描述 DoG SIFT hessian surf
- 与 Netcraft 携手为 GlobalSign 的客户提供先进的保护措施以防止网站遭受恶意入侵和钓鱼攻击...
- C#中取得汉语拼音首字母
- 免费学java的网站_java免费学习网站推荐
- 算法学习第一天-搭建能运行算法第四版的代码
- 编译原理构造词法分析器C语言,编译原理C语言词法分析器
- WindowsNT/2000的系统日志文件
- python矩阵乘法和转置_python简单实现矩阵的乘,加,转置和逆运算示例
- matlab coder 4.0,利用MATLAB Coder将MATLAB代码生成C/C++代码
- 让你的工作变轻松的一套免费的 iPhone 手势图标
- java合并果子_经典题-提高组2004年 合并果子
- WIndows 7 拷贝XP的共享文件夹时,出现您需要权限来执行此操作 的提示
- Web3D开发者兼职副业平台推荐
热门文章
- android pss内存,如何释放android系统中pss cache住的内存
- English trip -- VC(情景课)2 D Reading
- bzoj 1058: [ZJOI2007]报表统计
- div里嵌套了img底部会有白块问题和图片一像素问题解决
- hadoop环境安装及简单Map-Reduce示例
- SQL Server中常用全局变量介绍
- linux编译动态库之fPIC
- 初识Buildroot
- android 7.1 apk的systemuid [2]
- Android Alarm自上而下 调试浅析