zoukankan      html  css  js  c++  java
  • 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  文件路径
  • 相关阅读:
    what are Datatypes in SQLite supporting android
    Version of SQLite used in Android?
    使用(Drawable)资源———ShapeDrawable资源
    使用(Drawable)资源——LayerDrawable资源
    使用(Drawable)资源——StateListDrawable资源
    使用(Drawable)资源——图片资源
    数组(Array)资源
    使用字符串、颜色、尺寸资源
    资源的类型及存储方式——使用资源
    资源的类型及存储方式——资源的类型以及存储方式
  • 原文地址:https://www.cnblogs.com/rchao/p/14692824.html
Copyright © 2011-2022 走看看