# Join a meeting for any user

<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! -->

> The code on this page works with either the **default UI** or the **custom UI**.

This content applies to all user types.

## Join with a meeting number

To join a meeting, retrieve a `MeetingService` instance from ZoomSDK.

```java
int ret = -1;
MeetingService meetingService = mZoomSDK.getMeetingService();
if(meetingService == null) {
    return ret;
}
```

Then, configure the meeting options in `JoinMeetingOptions`.

```java
JoinMeetingOptions opts = ZoomMeetingUISettingHelper.getJoinMeetingOptions();

// some available options
opts.no_driving_mode = true;
opts.no_invite = true;
opts.no_meeting_end_message = true;
opts.no_titlebar = true;
opts.no_bottom_toolbar = true;
opts.no_dial_in_via_phone = true;
opts.no_dial_out_to_phone = true;
opts.no_disconnect_audio = true;
opts.no_share = true;
opts.invite_options = InviteOptions.INVITE_VIA_EMAIL + InviteOptions.INVITE_VIA_SMS;
opts.no_audio = true;
opts.no_video = true;
opts.meeting_views_options = MeetingViewsOptions.NO_BUTTON_SHARE;
opts.no_meeting_error_message = true;
opts.participant_id = "participant id";
```

When the options are set, prepare the meeting parameters to pass to the join meeting function.

```java
JoinMeetingParams params = new JoinMeetingParams();

params.displayName = DISPLAY_NAME;
params.meetingNo = meetingNo;
params.password = meetingPassword;
```

Once the options and parameters are ready, pass them to `joinMeetingWithParams` to join the meeting.

```java
// with options
int response = meetingService.joinMeetingWithParams(this, params, opts);

// with default options
int response = meetingService.joinMeetingWithParams(this, params);
```

## Join with a vanity ID

A **vanity ID** is a special and personalized ID that uniquely belongs to a user.

To join a meeting with vanity ID instead of meeting number, the process is exactly the same as joining a meeting with
meeting number. Just storing `vanity id` in `JoinMeetingParams` instead of storing `meeting number`.

```java
int ret = -1;
MeetingService meetingService = mZoomSDK.getMeetingService();
if(meetingService == null) {
    return ret;
}

JoinMeetingOptions opts =ZoomMeetingUISettingHelper.getJoinMeetingOptions();
JoinMeetingParams params = new JoinMeetingParams();
params.displayName = DISPLAY_NAME;
params.vanityID = vanityId;
params.password = meetingPassword;
return meetingService.joinMeetingWithParams(context, params,opts);
```

## Join Meeting status

To know whether the join meeting action is a success or not, or to get
the error message, implement the `onMeetingStatusChange` method.

```java
@Override
public void onMeetingStatusChanged(MeetingStatus meetingStatus, int errorCode,
                int internalErrorCode) {
Log.i(TAG, "onMeetingStatusChanged, meetingStatus=" + meetingStatus + ", errorCode=" + errorCode
    + ", internalErrorCode=" + internalErrorCode);

if(meetingStatus == MeetingStatus.MEETING_STATUS_FAILED && errorCode == MeetingError.MEETING_ERROR_CLIENT_INCOMPATIBLE) {
    Toast.makeText(this, "Version of ZoomSDK is too low!", Toast.LENGTH_LONG).show();
}
}
```

## Get the current meeting's available audio types

To get an integer representing the current meeting's supported audio type, call the `getSupportedMeetingAudioType` interface after joining a meeting. The integer value is `bitwise OR` - a bitwise operation - of each supported audio type presented in the `InMeetingSupportAudioType` enum. For example, if the current meeting supports both VOIP and telephony, the return value of `getSupportedMeetingAudioType` for that meeting is `AUDIO_TYPE_VOIP` and `AUDIO_TYPE_TELEPHONY`.

---
