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  文件路徑

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM