/**
* 从本地获取相册列表
* @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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 有时候需要获取到系统所有图片,但一次性获取太多了,需要分批分页获取,网上很多资料都没有说到分页,作为一个数据库达人...
- 一,前言:在日常的手机应用开发过程中,经常会遇到上传图片的需求,像上传头像之类的,这就需要调用系统的相机,相册获取...
- 原文地址 http://www.voidcn.com/article/p-frjafnjw-bau.html 要知...
- android 10 以上 提出了分区概念,在android 10中使用requestLegacyExternal...
- 未经本人授权,不得转载!否则必将维权到底 有个需求,可以从系统相册选择图片,上传到服务器。那么选择从系统相册选择完...