美文网首页
android 相册分页获取,兼容android 11

android 相册分页获取,兼容android 11

作者: 一个冬季 | 来源:发表于2024-10-23 14:22 被阅读0次
      /**
     * 从本地获取相册列表
     * @param context
     * @param pageIndex 从1开始
     * @param pageSize 页码大小
     */
   suspend fun getLocalAlbumList(context: Context, pageIndex: Int = 1, pageSize: Int = 20):MutableList<AlbumModel> {
        // 获得图片
        kotlin.runCatching {

            val list = ArrayList<AlbumModel>()

            val uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
            val projection = arrayOf(
                MediaStore.Images.Media.DATA,
                MediaStore.Images.Media.DATE_TAKEN
            )

            var cursor:Cursor? = null
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                val bundle = Bundle().apply {
                    putInt(ContentResolver.QUERY_ARG_LIMIT,pageSize)
                    putInt(ContentResolver.QUERY_ARG_OFFSET, (pageIndex - 1) * pageSize)
                    //按时间进行降序查询
                    putStringArray(ContentResolver.QUERY_ARG_SORT_COLUMNS, arrayOf(MediaStore.Images.Media.DATE_TAKEN))
                    putInt(ContentResolver.QUERY_ARG_SORT_DIRECTION, ContentResolver.QUERY_SORT_DIRECTION_DESCENDING)
                }
                cursor = context.contentResolver.query(uri, projection, bundle, null)
            } else {
                val sortOrder = MediaStore.Images.Media.DATE_TAKEN + " DESC " // 按照日期降序排
                // 计算偏移量
                val offset: Int = (pageIndex - 1) * pageSize
                // 查询图片
                cursor = context.contentResolver.query(
                    uri,
                    projection,
                    null,
                    null,
                    "$sortOrder LIMIT $pageSize OFFSET $offset"
                )
            }

            if(BuildConfig.DEBUG){
                if (cursor == null){
                    Log.i(TAG, "getLocalAlbumList--->cursor 是空的");
                }
            }

            if (cursor!=null){
                while (cursor.moveToNext()) {
                    val path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA))
                    val date = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATE_TAKEN))
                    val model = AlbumModel()
                    model.path = path
                    list.add(model)

                    if(BuildConfig.DEBUG){
                      Log.i(TAG, "getLocalAlbumList--->图片地址:${path},日期:${date}");
                    }

                }
            }

            cursor?.close()
            return  list
        }.onFailure {
            it.printStackTrace()
        }

        return mutableListOf()
    }

相关文章

网友评论

      本文标题:android 相册分页获取,兼容android 11

      本文链接:https://www.haomeiwen.com/subject/mtuddjtx.html