Android 如何使用户仅从Firebase实时数据库中删除特定数据

Android 如何使用户仅从Firebase实时数据库中删除特定数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在尝试删除Firebase实时数据库中用户之间的邮件。我已成功删除邮件,但我想添加一个条件,即用户不能删除他收到的邮件,只能删除他发送的邮件,目前,用户可以删除他收到的消息以及他从firebase实时数据库发送的消息 我的代码 MessageActivity.java 根据您的聊天对象,您拥有发送方和接收方ID。因此,您可以在onBindViewHolder中执行以下操作 if (chat.getSender().equals(fuser.getUid())){ // enabl

我正在尝试删除Firebase实时数据库中用户之间的邮件。我已成功删除邮件,但我想添加一个条件,即用户不能删除他收到的邮件,只能删除他发送的邮件,目前,用户可以删除他收到的消息以及他从firebase实时数据库发送的消息

我的代码

MessageActivity.java


根据您的
聊天
对象,您拥有
发送方
接收方
ID。因此,您可以在onBindViewHolder中执行以下操作

if (chat.getSender().equals(fuser.getUid())){
      // enable/show delete button 
}
 else{
      // disable/hide delete button 
}
    public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.ViewHolder> {

    public static  final int MSG_TYPE_LEFT = 0;
    public static  final int MSG_TYPE_RIGHT = 1;

    private Context mContext;
    private List<Chat> mChat;
    String imageurl;

    FirebaseUser fuser;

    public MessageAdapter(Context mContext, List<Chat> mChat,String imageurl) {
        this.mContext = mContext;
        this.mChat = mChat;
        this.imageurl=imageurl;

    }

    @NonNull
    @Override
    public MessageAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == MSG_TYPE_RIGHT) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_right, parent, false);

            return new MessageAdapter.ViewHolder(view);
        }
        else {
            View view = LayoutInflater.from(mContext).inflate(R.layout.chat_item_left, parent, false);

            return new MessageAdapter.ViewHolder(view);

        }
    }

    @Override
    public void onBindViewHolder(@NonNull MessageAdapter.ViewHolder holder, int position) {

        Chat chat=mChat.get(position);
        holder.show_message.setText(chat.getMessage());

        if (imageurl.equals("default")){
            holder.profile_image.setImageResource(R.mipmap.ic_launcher);
        } else {
            Glide.with(mContext).load(imageurl).into(holder.profile_image);
        }

        holder.show_message.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {

                String message_id=chat.getMessageId();
                Task<Void> task = Utils.removeUser(message_id);
                task.addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        Toast.makeText(mContext,"Message Deleted",Toast.LENGTH_SHORT).show();
                    }
                });


                return true;
            }
        });


    }

    @Override
    public int getItemCount() {
        return mChat.size();
        }
    public class ViewHolder extends RecyclerView.ViewHolder{

         public TextView show_message;
         public ImageView profile_image;

        public ViewHolder(@NonNull View itemView) {
        super(itemView);
        show_message=itemView.findViewById(R.id.show_message);
        profile_image=itemView.findViewById(R.id.profile_image);

        }
    }

    @Override
    public int getItemViewType(int position) {
        fuser= FirebaseAuth.getInstance().getCurrentUser();
        if (mChat.get(position).getSender().equals(fuser.getUid())){
            return MSG_TYPE_RIGHT;
        }
        else {
            return MSG_TYPE_LEFT;
        }
    }
}
    public class Chat {
    private String sender;
    private String receiver;
    private  String message;
    String MessageId;

    public Chat(String sender, String receiver, String message) {
        this.sender = sender;
        this.receiver = receiver;
        this.message = message;
    }

    public Chat() {
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getMessageId() {
        return MessageId;
    }

    public void setMessageId(String messageId) {
        MessageId = messageId;
    }

    @Override
    public boolean equals(@Nullable Object obj) {
        if(obj instanceof Chat){
            Chat chat=(Chat) obj;
            return this.MessageId.equals(chat.getMessageId());}
        else
            return false;
    }
}
if (chat.getSender().equals(fuser.getUid())){
      // enable/show delete button 
}
 else{
      // disable/hide delete button 
}