Search in sources :

Example 6 with Group

use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatConversationsAdapter method getFilter.

/**
 * It is used to perform search operation in filterConversationList. It will check
 * whether searchKeyword is similar to username or group name and modify filterConversationList
 * accordingly. In case if searchKeyword is empty it will set filterConversationList = conversationList
 *
 * @return
 */
@Override
public Filter getFilter() {
    return new Filter() {

        @Override
        protected FilterResults performFiltering(CharSequence charSequence) {
            String searchKeyword = charSequence.toString();
            if (searchKeyword.isEmpty()) {
                filterConversationList = conversationList;
            } else {
                List<Conversation> tempFilter = new ArrayList<>();
                for (Conversation conversation : filterConversationList) {
                    if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER) && ((User) conversation.getConversationWith()).getName().toLowerCase().contains(searchKeyword)) {
                        tempFilter.add(conversation);
                    } else if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_GROUP) && ((Group) conversation.getConversationWith()).getName().toLowerCase().contains(searchKeyword)) {
                        tempFilter.add(conversation);
                    } else if (conversation.getLastMessage() != null && conversation.getLastMessage().getCategory().equals(CometChatConstants.CATEGORY_MESSAGE) && conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT) && ((TextMessage) conversation.getLastMessage()).getText() != null && ((TextMessage) conversation.getLastMessage()).getText().contains(searchKeyword)) {
                        tempFilter.add(conversation);
                    }
                }
                filterConversationList = tempFilter;
            }
            FilterResults filterResults = new FilterResults();
            filterResults.values = filterConversationList;
            return filterResults;
        }

        @Override
        protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
            filterConversationList = (List<Conversation>) filterResults.values;
            notifyDataSetChanged();
        }
    };
}
Also used : Group(com.cometchat.pro.models.Group) ViewGroup(android.view.ViewGroup) Filter(android.widget.Filter) ArrayList(java.util.ArrayList) Conversation(com.cometchat.pro.models.Conversation) TextMessage(com.cometchat.pro.models.TextMessage)

Example 7 with Group

use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.

the class CallManager method startIncomingCall.

@RequiresApi(api = Build.VERSION_CODES.M)
public void startIncomingCall(Call call) {
    if (context.checkSelfPermission(Manifest.permission.MANAGE_OWN_CALLS) == PackageManager.PERMISSION_GRANTED) {
        Bundle extras = new Bundle();
        Uri uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, call.getSessionId().substring(0, 11), null);
        extras.putString(UIKitConstants.IntentStrings.SESSION_ID, call.getSessionId());
        extras.putString(UIKitConstants.IntentStrings.TYPE, call.getReceiverType());
        extras.putString(UIKitConstants.IntentStrings.CALL_TYPE, call.getType());
        extras.putString(UIKitConstants.IntentStrings.ID, call.getReceiverUid());
        if (call.getReceiverType().equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_GROUP))
            extras.putString(UIKitConstants.IntentStrings.NAME, ((Group) call.getReceiver()).getName());
        else
            extras.putString(UIKitConstants.IntentStrings.NAME, ((User) call.getCallInitiator()).getName());
        if (call.getType().equalsIgnoreCase(CometChatConstants.CALL_TYPE_VIDEO))
            extras.putInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE, VideoProfile.STATE_BIDIRECTIONAL);
        else
            extras.putInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE, VideoProfile.STATE_AUDIO_ONLY);
        extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, uri);
        extras.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
        extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, true);
        boolean isCallPermitted = false;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            isCallPermitted = telecomManager.isIncomingCallPermitted(phoneAccountHandle);
        } else {
            isCallPermitted = true;
        }
        Log.e("CallManager", "is incoming call permited = " + isCallPermitted + "\n" + phoneAccountHandle.toString());
        try {
            telecomManager.addNewIncomingCall(phoneAccountHandle, extras);
        } catch (SecurityException e) {
            e.printStackTrace();
            NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "2").setSmallIcon(R.drawable.cc).setContentTitle(((User) call.getCallInitiator()).getName()).setContentText(call.getCallStatus().toUpperCase() + " " + call.getType().toUpperCase() + " " + context.getString(R.string.call)).setColor(context.getColor(R.color.colorPrimary)).setGroup("group_id").setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
            builder.setPriority(NotificationCompat.PRIORITY_HIGH);
            builder.setCategory(NotificationCompat.CATEGORY_CALL);
            builder.addAction(0, "Answers", PendingIntent.getBroadcast(context.getApplicationContext(), 0, getCallIntent("Answer_", call), PendingIntent.FLAG_UPDATE_CURRENT));
            builder.addAction(0, "Decline", PendingIntent.getBroadcast(context.getApplicationContext(), 1, getCallIntent("Decline_", call), PendingIntent.FLAG_UPDATE_CURRENT));
            NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
            notificationManager.notify(UIKitConstants.Notification.ID, builder.build());
        } catch (Exception e) {
            Log.e("CallManagerError: ", e.getMessage());
        }
    }
}
Also used : Group(com.cometchat.pro.models.Group) User(com.cometchat.pro.models.User) Bundle(android.os.Bundle) NotificationManagerCompat(androidx.core.app.NotificationManagerCompat) NotificationCompat(androidx.core.app.NotificationCompat) Uri(android.net.Uri) CometChatException(com.cometchat.pro.exceptions.CometChatException) RequiresApi(androidx.annotation.RequiresApi)

Example 8 with Group

use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatForwardMessageActivity method init.

/**
 * This method is used to initialize the views
 */
public void init() {
    // Inflate the layout
    MaterialToolbar toolbar = findViewById(R.id.forward_toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    if (Utils.changeToolbarFont(toolbar) != null) {
        Utils.changeToolbarFont(toolbar).setTypeface(fontUtils.getTypeFace(FontUtils.robotoMedium));
    }
    selectedUsers = findViewById(R.id.selected_user);
    forwardBtn = findViewById(R.id.btn_forward);
    rvConversationList = findViewById(R.id.rv_conversation_list);
    etSearch = findViewById(R.id.search_bar);
    clearSearch = findViewById(R.id.clear_search);
    etSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            if (charSequence.length() > 1)
                clearSearch.setVisibility(View.VISIBLE);
        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (editable.toString().length() != 0) {
                if (conversationListAdapter != null)
                    conversationListAdapter.getFilter().filter(editable.toString());
            }
        }
    });
    etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
        if (i == EditorInfo.IME_ACTION_SEARCH) {
            if (conversationListAdapter != null)
                conversationListAdapter.getFilter().filter(textView.getText().toString());
            clearSearch.setVisibility(View.VISIBLE);
            return true;
        }
        return false;
    });
    clearSearch.setOnClickListener(view1 -> {
        etSearch.setText("");
        clearSearch.setVisibility(View.GONE);
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        // Hide the soft keyboard
        inputMethodManager.hideSoftInputFromWindow(etSearch.getWindowToken(), 0);
    });
    rvConversationList.setItemClickListener(new OnItemClickListener<Conversation>() {

        @Override
        public void OnItemClick(Conversation conversation, int position) {
            if (userList != null && userList.size() < 5) {
                if (!userList.containsKey(conversation.getConversationId())) {
                    userList.put(conversation.getConversationId(), conversation);
                    Chip chip = new Chip(CometChatForwardMessageActivity.this);
                    if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                        name = ((User) conversation.getConversationWith()).getName();
                        avatar = ((User) conversation.getConversationWith()).getAvatar();
                    } else {
                        name = ((Group) conversation.getConversationWith()).getName();
                        avatar = ((Group) conversation.getConversationWith()).getIcon();
                    }
                    chip.setText(name);
                    Glide.with(CometChatForwardMessageActivity.this).load(avatar).placeholder(R.drawable.ic_contacts).transform(new CircleCrop()).into(new SimpleTarget<Drawable>() {

                        @Override
                        public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                            chip.setChipIcon(resource);
                        }
                    });
                    chip.setCloseIconVisible(true);
                    chip.setOnCloseIconClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View vw) {
                            userList.remove(conversation.getConversationId());
                            selectedUsers.removeView(vw);
                            checkUserList();
                        }
                    });
                    selectedUsers.addView(chip, 0);
                }
                checkUserList();
            } else {
                CometChatSnackBar.show(CometChatForwardMessageActivity.this, selectedUsers, getString(R.string.forward_to_5_at_a_time), CometChatSnackBar.WARNING);
            }
        }
    });
    // It sends message to selected users present in userList using thread. So UI thread doesn't get heavy.
    forwardBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (messageCategory.equals(CometChatConstants.CATEGORY_MESSAGE)) {
                if (messageType != null && messageType.equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
                    new Thread(() -> {
                        for (int i = 0; i <= userList.size() - 1; i++) {
                            Conversation conversation = new ArrayList<>(userList.values()).get(i);
                            TextMessage message;
                            String uid;
                            String type;
                            Log.e(TAG, "run: " + conversation.getConversationId());
                            if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                uid = ((User) conversation.getConversationWith()).getUid();
                                type = CometChatConstants.RECEIVER_TYPE_USER;
                            } else {
                                uid = ((Group) conversation.getConversationWith()).getGuid();
                                type = CometChatConstants.RECEIVER_TYPE_GROUP;
                            }
                            message = new TextMessage(uid, textMessage, type);
                            sendMessage(message);
                            if (i == userList.size() - 1) {
                                Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                startActivity(intent);
                                finish();
                            }
                        }
                    }).start();
                } else if (messageType != null && (messageType.equals(CometChatConstants.MESSAGE_TYPE_IMAGE) || messageType.equals(CometChatConstants.MESSAGE_TYPE_AUDIO) || messageType.equals(CometChatConstants.MESSAGE_TYPE_FILE) || messageType.equals(CometChatConstants.MESSAGE_TYPE_VIDEO))) {
                    new Thread(() -> {
                        for (int i = 0; i <= userList.size() - 1; i++) {
                            Conversation conversation = new ArrayList<>(userList.values()).get(i);
                            MediaMessage message;
                            String uid;
                            String type;
                            Log.e(TAG, "run: " + conversation.getConversationId());
                            if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                uid = ((User) conversation.getConversationWith()).getUid();
                                type = CometChatConstants.RECEIVER_TYPE_USER;
                            } else {
                                uid = ((Group) conversation.getConversationWith()).getGuid();
                                type = CometChatConstants.RECEIVER_TYPE_GROUP;
                            }
                            message = new MediaMessage(uid, null, messageType, type);
                            Attachment attachment = new Attachment();
                            attachment.setFileUrl(mediaMessageUrl);
                            attachment.setFileMimeType(mediaMessageMime);
                            attachment.setFileSize(mediaMessageSize);
                            attachment.setFileExtension(mediaMessageExtension);
                            attachment.setFileName(mediaMessageName);
                            message.setAttachment(attachment);
                            Log.e(TAG, "onClick: " + attachment.toString());
                            sendMediaMessage(message, i);
                        // if (i == userList.size() - 1) {
                        // Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
                        // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        // startActivity(intent);
                        // finish();
                        // }
                        }
                    }).start();
                } else if (messageType != null && (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_IMAGE_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_VIDEO_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_AUDIO_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_FILE_MESSAGE))) {
                    new Thread(() -> {
                        for (int i = 0; i <= userList.size() - 1; i++) {
                            Conversation conversation = new ArrayList<>(userList.values()).get(i);
                            MediaMessage message = null;
                            String uid;
                            String type;
                            Log.e(TAG, "run: " + conversation.getConversationId());
                            if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                uid = ((User) conversation.getConversationWith()).getUid();
                                type = CometChatConstants.RECEIVER_TYPE_USER;
                            } else {
                                uid = ((Group) conversation.getConversationWith()).getGuid();
                                type = CometChatConstants.RECEIVER_TYPE_GROUP;
                            }
                            File file = MediaUtils.getRealPath(CometChatForwardMessageActivity.this, Uri.parse(mediaMessageUrl), true);
                            if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_IMAGE_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_IMAGE, type);
                            else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_VIDEO_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_VIDEO, type);
                            else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_AUDIO_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_AUDIO, type);
                            else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_FILE_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_FILE, type);
                            try {
                                JSONObject jsonObject = new JSONObject();
                                jsonObject.put("path", mediaMessageUrl);
                                message.setMetadata(jsonObject);
                            } catch (Exception e) {
                                Log.e(TAG, "onError: " + e.getMessage());
                            }
                            sendMediaMessage(message, i);
                        }
                    }).start();
                } else {
                    if (messageType != null && messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.LOCATION)) {
                        new Thread(() -> {
                            for (int i = 0; i <= userList.size() - 1; i++) {
                                Conversation conversation = new ArrayList<>(userList.values()).get(i);
                                CustomMessage message;
                                String uid;
                                JSONObject customData = new JSONObject();
                                String type;
                                Log.e(TAG, "run: " + conversation.getConversationId());
                                if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                    uid = ((User) conversation.getConversationWith()).getUid();
                                    type = CometChatConstants.RECEIVER_TYPE_USER;
                                } else {
                                    uid = ((Group) conversation.getConversationWith()).getGuid();
                                    type = CometChatConstants.RECEIVER_TYPE_GROUP;
                                }
                                try {
                                    customData = new JSONObject();
                                    customData.put("latitude", lat);
                                    customData.put("longitude", lon);
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                                message = new CustomMessage(uid, type, UIKitConstants.IntentStrings.LOCATION, customData);
                                sendLocationMessage(message);
                                if (i == userList.size() - 1) {
                                    Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
                                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                    startActivity(intent);
                                    finish();
                                }
                            }
                        }).start();
                    }
                }
            }
        }
    });
    rvConversationList.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            if (!recyclerView.canScrollVertically(1)) {
                makeConversationList();
            }
        }
    });
}
Also used : ChipGroup(com.google.android.material.chip.ChipGroup) Group(com.cometchat.pro.models.Group) User(com.cometchat.pro.models.User) MediaMessage(com.cometchat.pro.models.MediaMessage) ArrayList(java.util.ArrayList) InputMethodManager(android.view.inputmethod.InputMethodManager) Conversation(com.cometchat.pro.models.Conversation) Attachment(com.cometchat.pro.models.Attachment) Chip(com.google.android.material.chip.Chip) SimpleTarget(com.bumptech.glide.request.target.SimpleTarget) MaterialToolbar(com.google.android.material.appbar.MaterialToolbar) NonNull(androidx.annotation.NonNull) CustomMessage(com.cometchat.pro.models.CustomMessage) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) Drawable(android.graphics.drawable.Drawable) JSONException(org.json.JSONException) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) CometChatException(com.cometchat.pro.exceptions.CometChatException) JSONException(org.json.JSONException) CircleCrop(com.bumptech.glide.load.resource.bitmap.CircleCrop) JSONObject(org.json.JSONObject) Transition(com.bumptech.glide.request.transition.Transition) RecyclerView(androidx.recyclerview.widget.RecyclerView) File(java.io.File) Nullable(androidx.annotation.Nullable) TextMessage(com.cometchat.pro.models.TextMessage)

Example 9 with Group

use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatCreateGroup method createGroup.

private void createGroup(Group group) {
    ProgressDialog progressDialog = ProgressDialog.show(getContext(), null, getString(R.string.creating_group));
    CometChat.createGroup(group, new CometChat.CallbackListener<Group>() {

        @Override
        public void onSuccess(Group group) {
            progressDialog.dismiss();
            Intent intent = new Intent(getActivity(), CometChatMessageListActivity.class);
            intent.putExtra(UIKitConstants.IntentStrings.NAME, group.getName());
            intent.putExtra(UIKitConstants.IntentStrings.GROUP_OWNER, group.getOwner());
            intent.putExtra(UIKitConstants.IntentStrings.GUID, group.getGuid());
            intent.putExtra(UIKitConstants.IntentStrings.AVATAR, group.getIcon());
            intent.putExtra(UIKitConstants.IntentStrings.GROUP_TYPE, group.getGroupType());
            intent.putExtra(UIKitConstants.IntentStrings.TYPE, CometChatConstants.RECEIVER_TYPE_GROUP);
            intent.putExtra(UIKitConstants.IntentStrings.MEMBER_COUNT, group.getMembersCount());
            intent.putExtra(UIKitConstants.IntentStrings.GROUP_DESC, group.getDescription());
            intent.putExtra(UIKitConstants.IntentStrings.GROUP_PASSWORD, group.getPassword());
            if (getActivity() != null)
                getActivity().finish();
            startActivity(intent);
        }

        @Override
        public void onError(CometChatException e) {
            CometChatSnackBar.show(getContext(), etGroupName.getRootView(), CometChatError.localized(e), CometChatSnackBar.ERROR);
            Log.e(TAG, "onError: " + e.getMessage());
        }
    });
}
Also used : CometChatException(com.cometchat.pro.exceptions.CometChatException) Group(com.cometchat.pro.models.Group) ViewGroup(android.view.ViewGroup) CometChat(com.cometchat.pro.core.CometChat) CometChatMessageListActivity(com.cometchat.pro.uikit.ui_components.messages.message_list.CometChatMessageListActivity) Intent(android.content.Intent) ProgressDialog(android.app.ProgressDialog)

Example 10 with Group

use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatCreateGroup method createGroup.

private void createGroup() {
    if (!etGroupName.getText().toString().isEmpty()) {
        if (groupType.equals(CometChatConstants.GROUP_TYPE_PUBLIC) || groupType.equals(CometChatConstants.GROUP_TYPE_PRIVATE)) {
            Group group = new Group("group" + generateRandomString(25), etGroupName.getText().toString(), groupType, "");
            createGroup(group);
        } else if (groupType.equals(CometChatConstants.GROUP_TYPE_PASSWORD)) {
            if (etGroupPassword.getText().toString().isEmpty())
                etGroupPassword.setError(getResources().getString(R.string.fill_this_field));
            else if (etGroupCnfPassword.getText().toString().isEmpty())
                etGroupCnfPassword.setError(getResources().getString(R.string.fill_this_field));
            else if (etGroupPassword.getText().toString().equals(etGroupCnfPassword.getText().toString())) {
                Group group = new Group(generateRandomString(25), etGroupName.getText().toString(), groupType, etGroupPassword.getText().toString());
                createGroup(group);
            } else if (etGroupPassword != null)
                CometChatSnackBar.show(getContext(), etGroupCnfPassword.getRootView(), getResources().getString(R.string.password_not_matched), CometChatSnackBar.WARNING);
        }
    } else {
        etGroupName.setError(getResources().getString(R.string.fill_this_field));
    }
}
Also used : Group(com.cometchat.pro.models.Group) ViewGroup(android.view.ViewGroup)

Aggregations

Group (com.cometchat.pro.models.Group)14 ViewGroup (android.view.ViewGroup)10 Intent (android.content.Intent)6 View (android.view.View)6 RecyclerView (androidx.recyclerview.widget.RecyclerView)6 CometChatException (com.cometchat.pro.exceptions.CometChatException)6 User (com.cometchat.pro.models.User)6 ImageView (android.widget.ImageView)4 Editable (android.text.Editable)3 TextWatcher (android.text.TextWatcher)3 TextView (android.widget.TextView)3 Call (com.cometchat.pro.core.Call)3 CometChat (com.cometchat.pro.core.CometChat)3 Conversation (com.cometchat.pro.models.Conversation)3 ArrayList (java.util.ArrayList)3 ProgressDialog (android.app.ProgressDialog)2 Uri (android.net.Uri)2 InputMethodManager (android.view.inputmethod.InputMethodManager)2 NotificationCompat (androidx.core.app.NotificationCompat)2 NotificationManagerCompat (androidx.core.app.NotificationManagerCompat)2