如何使用 MediaStore 获取文件夹中的项目数 Android

How to get Count of Items in a Folder using MediaStore Android

我有一个包含图像的目录。我想知道如何使用 MediaStore 从该文件夹中获取图像数量。我尝试使用 COUNT 关键字,但 AndroidQ 不支持它。也请告知是否有其他有效的方法。

请尝试这种方式

 private static int getCount(@NonNull final Context context, @NonNull final Uri contentUri, @NonNull final String bucketId)
    {
        try (final Cursor cursor = context.getContentResolver().query(contentUri,
                null, MediaStore.Video.Media.BUCKET_ID + "=?", new String[]{bucketId}, null))
        {
            return ((cursor == null) || (cursor.moveToFirst() == false)) ? 0 : cursor.getCount();
        }
    }



final HashMap<String, AlbumQuery.Album> output = new HashMap<>();
        final Uri contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
        final String[] projection = {MediaStore.Video.VideoColumns.BUCKET_ID,MediaStore.Video.VideoColumns.BUCKET_DISPLAY_NAME,MediaStore.Video.VideoColumns.DATA};
        try (final Cursor cursor = context.getContentResolver().query(contentUri, projection, null, null, null))
        {
            if ((cursor != null) && (cursor.moveToFirst() == true))
            {
                final int columnBucketName = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.BUCKET_DISPLAY_NAME);
                final int columnBucketId   = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.BUCKET_ID);
                do
                {
                    final String bucketId   = cursor.getString(columnBucketId);
                    final String bucketName = cursor.getString(columnBucketName);
                    if (output.containsKey(bucketName) == false)
                    {
                        final int count = AlbumQuery.getCount(context, contentUri, bucketId);
                        //output.put(bucketName, album);
                    }

                } while (cursor.moveToNext());
            }
        }




**Another way**

 fun count(dir: File) {
        try {
            if (dir.isDirectory) {
                if(!dir.name.equals(AppConstants.MASK_DIR_LOCAL) && !dir.name.equals(DIR1) && !dir.name.equals(DIR2) ){
                    val children = dir.list()
                    for (i in children.indices) {
                        //File(dir, children[i])
                            count++;
                    }
                }
            }
        }catch (e:java.lang.Exception){
            e.printStackTrace()
        }
    }