This commit is contained in:
18401019693 2022-07-27 15:14:56 +08:00
parent aac51d423c
commit 88278df77d
4 changed files with 112 additions and 10 deletions

View File

@ -1,7 +1,10 @@
package com.yunbao.common.dialog;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
@ -10,8 +13,18 @@ import android.widget.LinearLayout;
import android.widget.PopupWindow;
import com.yunbao.common.R;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.ToastUtil;
import io.rong.imkit.IMCenter;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Message;
import io.rong.message.RecallNotificationMessage;
import io.rong.message.TextMessage;
import static android.content.Context.CLIPBOARD_SERVICE;
import static com.yunbao.common.utils.WordUtil.getString;
/**
* 消息長按彈窗
@ -20,7 +33,7 @@ public class MessageLongClickPopuwindow implements View.OnClickListener {
private Activity mContext;
private View popupView;
private PopupWindow popupWindow;
private LinearLayout copyLinear;
private LinearLayout copyLinear, withdrawLinear, quoteLinear;
private Message message;
public MessageLongClickPopuwindow(Activity context) {
@ -31,6 +44,24 @@ public class MessageLongClickPopuwindow implements View.OnClickListener {
public MessageLongClickPopuwindow setMessage(Message message) {
this.message = message;
long sentTime = message.getSentTime();
Log.e("MessageLongClick ", "sentTime:" + sentTime);
Log.e("MessageLongClick ", "currentTimeMillis:" + System.currentTimeMillis());
Log.e("MessageLongClick ", "秒:" + ((System.currentTimeMillis() - sentTime) / 1000));
//超过俩分钟无法撤回
if (((System.currentTimeMillis() - sentTime) / 1000) > 120) {
withdrawLinear.setVisibility(View.GONE);
}
//只可以撤回自己的消息
IMLoginModel model = IMLoginManager.get(mContext).getUserInfo();
if (!message.getSenderUserId().equals(String.valueOf(model.getId()))) {
withdrawLinear.setVisibility(View.GONE);
}
//非文字信息无法复制
if (!message.getObjectName().equals("RC:TxtMsg")) {
copyLinear.setVisibility(View.GONE);
}
return this;
}
@ -55,10 +86,13 @@ public class MessageLongClickPopuwindow implements View.OnClickListener {
}
private void initView() {
popupView.findViewById(R.id.copy_linear).setOnClickListener(this);
popupView.findViewById(R.id.withdraw_linear).setOnClickListener(this);
popupView.findViewById(R.id.quote_linear).setOnClickListener(this);
long sentTime = message.getSentTime();
copyLinear = popupView.findViewById(R.id.copy_linear);
copyLinear.setOnClickListener(this);
withdrawLinear = popupView.findViewById(R.id.withdraw_linear);
withdrawLinear.setOnClickListener(this);
quoteLinear = popupView.findViewById(R.id.quote_linear);
quoteLinear.setOnClickListener(this);
}
@Override
@ -66,11 +100,44 @@ public class MessageLongClickPopuwindow implements View.OnClickListener {
int id = v.getId();
//复制
if (id == R.id.copy_linear) {
copyMethod();
popupWindow.dismiss();
} else if (id == R.id.withdraw_linear) {//撤回
withdrawMethod();
popupWindow.dismiss();
} else if (id == R.id.quote_linear) {//引用
}
}
private void copyMethod() {
//文字消息支持复制
if (message.getContent() instanceof TextMessage) {
String content = ((TextMessage) message.getContent()).getContent();
ClipboardManager cm = (ClipboardManager) mContext.getSystemService(CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("text", content);
cm.setPrimaryClip(clipData);
ToastUtil.show(getString(R.string.copy_success));
}
}
/**
* 撤回消息
*/
private void withdrawMethod() {
IMCenter.getInstance().recallMessage(message, "撤回成功", new RongIMClient.ResultCallback<RecallNotificationMessage>() {
@Override
public void onSuccess(RecallNotificationMessage recallNotificationMessage) {
ToastUtil.show(getString(R.string.withdraw_success));
//删除草稿信息
IMCenter.getInstance().clearTextMessageDraft(message.getConversationType(), message.getTargetId(), null);
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
ToastUtil.show(errorCode.msg);
}
});
}
}

View File

@ -850,4 +850,5 @@
<string name="exclusive_instructor1">聯系您的專屬指導員</string>
<string name="exclusive_instructor2">給您匹配更多風格的主播唷!</string>
<string name="hurry_contact">趕快聯系他/她吧!</string>
<string name="withdraw_success">撤回成功</string>
</resources>

View File

@ -40,8 +40,13 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import io.rong.imkit.IMCenter;
import io.rong.imkit.model.ResultCallback;
import io.rong.imkit.userinfo.RongUserInfoManager;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.UserInfo;
import okhttp3.internal.http2.ErrorCode;
/**
* 聊天会话界面
@ -109,7 +114,7 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
titleView.setText("系統消息");
inputPanel.setVisibility(View.GONE);
}
getDraft();
}
@ -183,6 +188,23 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
}
}
/**
* 获取草稿箱信息系
*/
private void getDraft() {
RongIMClient.getInstance().getTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, new RongIMClient.ResultCallback<String>() {
@Override
public void onSuccess(String s) {
inputPanel.setPresetInformation(s);
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
@ -205,6 +227,12 @@ public class PDLiveConversationActivity extends AbsActivity implements View.OnCl
@Override
protected void onDestroy() {
super.onDestroy();
//获取输入框信息存进输入框
String content = inputPanel.getPresetInformation();
if (!TextUtils.isEmpty(content)){
IMCenter.getInstance().saveTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, content, null);
}
EventBus.getDefault().unregister(this);
}

View File

@ -54,6 +54,13 @@ public class InputPanelViewHolder extends LinearLayout implements View.OnClickLi
return this;
}
/**
* 获取输入框信息
*/
public String getPresetInformation() {
return editBtn.getText().toString().trim();
}
/**
* 必传字段
*
@ -157,7 +164,7 @@ public class InputPanelViewHolder extends LinearLayout implements View.OnClickLi
@Override
public void onSuccess(Message message) {
IMCenter.getInstance().clearTextMessageDraft(Conversation.ConversationType.PRIVATE, targetId, null);
}
@Override
@ -185,7 +192,6 @@ public class InputPanelViewHolder extends LinearLayout implements View.OnClickLi
inputPanelSendBtn.setBackground(getResources().getDrawable(R.mipmap.btn_sand1));
} else {
isSend = false;
IMCenter.getInstance().saveTextMessageDraft(types, targetId, editBtn.getText().toString(), null);
inputPanelSendBtn.setBackground(getResources().getDrawable(R.mipmap.btn_sand));
}
int offset;