> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Block Users

> Block, unblock, and list blocked users with the CometChat Android SDK to control communication in your app.

<Accordion title="AI Integration Quick Reference">
  <Tabs>
    <Tab title="Kotlin">
      ```kotlin theme={null}
      // Block users
      val uids = listOf("UID1", "UID2", "UID3")
      CometChat.blockUsers(uids, object : CometChat.CallbackListener<HashMap<String, String>>() {
          override fun onSuccess(resultMap: HashMap<String, String>) {
              // resultMap contains UID -> "success"/"fail"
          }
          override fun onError(e: CometChatException) { }
      })

      // Unblock users
      CometChat.unblockUsers(uids, object : CometChat.CallbackListener<HashMap<String, String>>() {
          override fun onSuccess(resultMap: HashMap<String, String>) { }
          override fun onError(e: CometChatException) { }
      })

      // Get blocked users list
      val request = BlockedUsersRequestBuilder()
          .setLimit(30)
          .setDirection(BlockedUsersRequest.DIRECTION_BLOCKED_BY_ME)
          .build()
      request.fetchNext(object : CallbackListener<List<User>>() {
          override fun onSuccess(users: List<User>) { }
          override fun onError(e: CometChatException) { }
      })
      ```
    </Tab>

    <Tab title="Java">
      ```java theme={null}
      // Block users
      List<String> uids = Arrays.asList("UID1", "UID2", "UID3");
      CometChat.blockUsers(uids, new CometChat.CallbackListener<HashMap<String, String>>() {
          @Override
          public void onSuccess(HashMap<String, String> resultMap) {
              // resultMap contains UID -> "success"/"fail"
          }
          @Override
          public void onError(CometChatException e) { }
      });

      // Unblock users
      CometChat.unblockUsers(uids, new CometChat.CallbackListener<HashMap<String, String>>() {
          @Override
          public void onSuccess(HashMap<String, String> resultMap) { }
          @Override
          public void onError(CometChatException e) { }
      });

      // Get blocked users list
      BlockedUsersRequest request = new BlockedUsersRequest.BlockedUsersRequestBuilder()
          .setLimit(30)
          .setDirection(BlockedUsersRequest.DIRECTION_BLOCKED_BY_ME)
          .build();
      request.fetchNext(new CometChat.CallbackListener<List<User>>() {
          @Override
          public void onSuccess(List<User> users) { }
          @Override
          public void onError(CometChatException e) { }
      });
      ```
    </Tab>
  </Tabs>
</Accordion>

## Block Users

Use `blockUsers()` to block one or more users. All communication to and from blocked users is stopped. Pass a `List<String>` of UIDs to block.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    List<String > uids = new ArrayList<>();
    uids.add("UID1");
    uids.add("UID2");
    uids.add("UID3");
    CometChat.blockUsers(uids, new CometChat.CallbackListener<HashMap<String, String>>() {
    @Override
    public void onSuccess(HashMap<String, String> resultMap) {
      // Handle block users success.
    }

    @Override
    public void onError(CometChatException e) {
      // Handle block users failure
    }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val uids = ArrayList<String>()
    uids.add("UID1")
    uids.add("UID2")
    uids.add("UID3")

    CometChat.blockUsers(uids,object:CometChat.CallbackListener<HashMap<String, String>>() {
    override fun onSuccess(resultMap: HashMap<String, String>) {
      // Handle unblock users success.
    }

    override fun onError(e: CometChatException) {
      // Handle unblock users failure
    }
    })
    ```
  </Tab>
</Tabs>

In the `onSuccess()` callback, you receive a HashMap which contains `UIDs` as the keys and `success` or `fail` as the value based on whether the block operation for the `UID` was successful or not.

## Unblock Users

Use `unblockUsers()` to unblock previously blocked users. Pass a `List<String>` of UIDs to unblock.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    List<String > uids = new ArrayList<>();
    uids.add("UID1");
    uids.add("UID2");
    uids.add("UID3");
    CometChat.unblockUsers(uids, new CometChat.CallbackListener<HashMap<String, String>>() {
    @Override
    public void onSuccess(HashMap<String, String> resultMap) {
      // Handle unblock users success.
    }

    @Override
    public void onError(CometChatException e) {
      // Handle unblock users failure
    }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val uids = ArrayList<String>()
    uids.add("UID1")
    uids.add("UID2")
    uids.add("UID3")

    CometChat.unblockUsers(uids,object:CometChat.CallbackListener<HashMap<String, String>>() {
    override fun onSuccess(resultMap: HashMap<String, String>) {
      // Handle unblock users success.
    }

    override fun onError(e: CometChatException) {
      // Handle unblock users failure
    }
    })
    ```
  </Tab>
</Tabs>

In the `onSuccess()` callback, you receive a HashMap which contains `UIDs` as the keys and `success` or `fail` as the value based on whether the unblock operation for the `UID` was successful or not.

***

## Get List of Blocked Users

Use `BlockedUsersRequestBuilder` to fetch blocked users with optional filters.

### Set Limit

Set the number of blocked users to fetch per request.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder()
    .setLimit(10)
    .build();
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val blockedUsersRequest = BlockedUsersRequestBuilder()
    .setLimit(10)
    .build()
    ```
  </Tab>
</Tabs>

### Set Search Keyword

Filter blocked users by a search string.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder()
    .setSearchKeyword("abc")
    .build();
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val blockedUsersRequest = BlockedUsersRequestBuilder()
    .setSearchKeyword("abc")
    .build()
    ```
  </Tab>
</Tabs>

### Set Direction

* `BlockedUsersRequest.DIRECTION_BLOCKED_BY_ME` - Ensures that the list of blocked users only contains users blocked by the logged-in user.
* `BlockedUsersRequest.DIRECTION_HAS_BLOCKED_ME` - Ensures that the list of blocked users only contains users that have blocked the logged-in user.
* `BlockedUsersRequest.DIRECTION_BOTH` - Ensures the list of users includes both of the above cases. This is the default value for the direction variable if it is not set.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder()
    .setDirection(BlockedUsersRequest.DIRECTION_BLOCKED_BY_ME)
    .build();
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val blockedUsersRequest = BlockedUsersRequestBuilder()
    .setDirection(BlockedUsersRequest.DIRECTION_BLOCKED_BY_ME)
    .build()    
    ```
  </Tab>
</Tabs>

### Fetch Blocked Users

After configuring the builder, call `build()` then `fetchNext()` to retrieve blocked users.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    BlockedUsersRequest blockedUsersRequest = new BlockedUsersRequest.BlockedUsersRequestBuilder().setLimit(10).build();

    blockedUsersRequest.fetchNext(new CometChat.CallbackListener<List<User>>() {
    @Override
    public void onSuccess(List<User> users) {
      for(User user : users){
        Log.e(TAG, user.getUid());
      }
    }

    @Override
    public void onError(CometChatException e) {
      Log.e(TAG, e.getMessage());
    }
    });
    ```
  </Tab>

  <Tab title="Kotlin">
    ```kotlin theme={null}
    val blockedUsersRequest = BlockedUsersRequestBuilder().setLimit(10).build()

    blockedUsersRequest.fetchNext(object : CallbackListener<List<User>>() {
    override fun onSuccess(users: List<User>) {
      for (user in users) {
        Log.e(TAG, user.uid)
      }
    }

    override fun onError(e: CometChatException) {
      Log.e(TAG, e.message)
    }
    })
    ```
  </Tab>
</Tabs>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Retrieve Users" icon="users" href="/sdk/android/retrieve-users">
    Fetch and filter user lists in your app
  </Card>

  <Card title="User Management" icon="user-gear" href="/sdk/android/user-management">
    Learn about user objects and properties
  </Card>

  <Card title="Send Message" icon="paper-plane" href="/sdk/android/send-message">
    Send messages to users and groups
  </Card>

  <Card title="User Presence" icon="circle-dot" href="/sdk/android/user-presence">
    Track user online/offline status
  </Card>
</CardGroup>
