Я попробовал два подхода, и оба имеют большие недостатки. ContentReSolver.query_ARG_SORT_COLUMNS и принести пучки. /> [*] Что, по моему мнению, неэффективно из-за запроса в цикле. ....
....
val queryBundle = Bundle().apply {
// SORTING
putStringArray(
ContentResolver.QUERY_ARG_SORT_COLUMNS,
...
// Group results by Bucket ID
putStringArray(
ContentResolver.QUERY_ARG_GROUP_COLUMNS,
arrayOf(MediaStore.Files.FileColumns.BUCKET_ID)
)
val cursor = context.contentResolver.query(externalUri, projection, queryBundle, null)
while (cursor.moveToNext()) {
val bucketId = cursor.getString(bucketIdIndex)
val bucketName = cursor.getString(bucketNameIndex)
// Query in looping
val countCursor = context.contentResolver.query(
externalUri,
projection,
"${MediaStore.Files.FileColumns.BUCKET_ID}=${bucketId}",
null,
null,
)
val bucketCount = countCursor?.count
....
....
}
...
< /code>
подход 2 < /h2>
- Запрос всех носителей ContentReSolver и идентифицировать каждый < /li>
Разделение BucketId и найдите счет. Файлы в ContentResolver не масштабируются для большого количества файлов
Подробнее здесь: https://stackoverflow.com/questions/795 ... fficiently
Мобильная версия