ContentResolver 简单使用

 

注意不能在主线程使用

val cursor = contentResolver.query(
                //检索的目录
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                //检索数据需要返回的列 如果为null则返回所有列 不建议返回所有列,仅返回我们需要的列即可
                //能够使用的列都在MediaStore.Images.Media类中以静态常量的形式定义的
                null,
                //where 条件
                "${MediaStore.Images.Media.SIZE} > ?",
                //where 条件的?占位符的具体参数值 这里限制仅查询大于100KB的文件
                arrayOf("100 * 1024"),
                //排序字段 注意不需要写order by
                //这里按照文件的创建时间倒序排列
                "${MediaStore.Images.Media.DATE_ADDED} desc"
            )

            //移动到的绝对位置   移动到索引为50的位置
            //cursor?.moveToPosition(50)
            //移动的相对值  从当前位置往后移动50个位置
            //cursor?.move(50)

            while (cursor?.moveToNext() == true){
                val count = cursor.columnCount
                for(i in 0 until count){
                    val columnName = cursor.getColumnName(i)
                    when (val columnType = cursor.getType(i)) {
                        Cursor.FIELD_TYPE_NULL -> {
                            //列为null
                        }
                        Cursor.FIELD_TYPE_INTEGER -> {
                            //列的类型为整型
                            Log.d(TAG, "$columnName:$columnType=${cursor.getInt(i)}")
                        }
                        Cursor.FIELD_TYPE_FLOAT -> {
                            //列的类型为浮点型
                            Log.d(TAG, "$columnName:$columnType=${cursor.getFloat(i)}")
                        }
                        Cursor.FIELD_TYPE_STRING -> {
                            //列的类型为字符串
                            Log.d(TAG, "$columnName:$columnType=${cursor.getString(i)}")
                        }
                        Cursor.FIELD_TYPE_BLOB -> {
                            //列的类型为BLOB 二进制长对象
                            Log.d(TAG, "$columnName:$columnType=${cursor.getBlob(i)}")
                        }
                    }

                }
                Log.d(TAG, "==============================================================")
            }

一些常用常量  我们想要查看比较详细的常量时可以查看MediaColumns 接口类

MediaStore.Images.Media.SIZE  文件的大小
MediaStore.Images.Media.DATE_ADDED  文件创建时间
MediaStore.Images.Media.DATE_MODIFIED  文件修改时间
MediaStore.Images.Media.DATE_EXPIRES  文件过期时间 (临时文件)
MediaStore.Images.Media._ID   文件的id
MediaStore.Images.Media.MIME_TYPE   文件的mimetype
MediaStore.Images.Media.TITLE   文件名字
MediaStore.Images.Media.DISPLAY_NAME  显示名字
MediaStore.Images.Media.WIDTH   文件宽度
MediaStore.Images.Media.HEIGHT 文件高度
MediaStore.Images.Media.DATE  文件路径

 

posted @ 2021-04-23 10:55  荣超  阅读(1446)  评论(0编辑  收藏  举报