Commit 32cadb23 authored by jianglx's avatar jianglx

Im的添加好友代码提交

parent b303a9d6
...@@ -59,7 +59,8 @@ ...@@ -59,7 +59,8 @@
<activity android:name=".AddressListActivity" /> <activity android:name=".AddressListActivity" />
<activity android:name=".friend.AddFriendActivity" /> <activity android:name=".friend.AddFriendActivity" />
<activity android:name=".friend.NewFriendActivity" /> <activity android:name=".friend.NewFriendActivity" />
<activity android:name=".UserDetailActivity"></activity> <activity android:name=".UserDetailActivity" />
<activity android:name=".friend.RealAddFriendActivity"></activity>
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -2,9 +2,9 @@ package com.rv.im; ...@@ -2,9 +2,9 @@ package com.rv.im;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
...@@ -12,8 +12,10 @@ import com.ruiwenliu.wrapper.base.BaseBean; ...@@ -12,8 +12,10 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity; import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.weight.TitleView; import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.im.bean.UserDetailBean; import com.rv.im.bean.UserDetailBean;
import com.rv.im.db.service.FriendServiceImp; import com.rv.im.listener.NoDoubleClickListener;
import com.rv.im.presenter.UserDetailPresenter; import com.rv.im.presenter.UserDetailPresenter;
import com.rv.im.util.DateUtils;
import com.rv.im.util.TimeUtils;
import com.rv.im.view.RoundImageView; import com.rv.im.view.RoundImageView;
public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter> { public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter> {
...@@ -35,6 +37,8 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter> ...@@ -35,6 +37,8 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
private Button btnNextStep; private Button btnNextStep;
private UserDetailBean.UserDetail user;
public static void start(Context ctx, String userId) { public static void start(Context ctx, String userId) {
Intent intent = new Intent(ctx, UserDetailActivity.class); Intent intent = new Intent(ctx, UserDetailActivity.class);
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
...@@ -92,6 +96,7 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter> ...@@ -92,6 +96,7 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
case 0: case 0:
if (result != null && result.resultCode == 1) { if (result != null && result.resultCode == 1) {
UserDetailBean userDetailBean = (UserDetailBean) result; UserDetailBean userDetailBean = (UserDetailBean) result;
user = userDetailBean.getData();
updateUi(); updateUi();
} }
break; break;
...@@ -99,5 +104,68 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter> ...@@ -99,5 +104,68 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
} }
private void updateUi() { private void updateUi() {
if (user == null) {
return;
}
if (isFinishing()) {
return;
}
nameTv.setText(TextUtils.isEmpty(user.getNickName()) ? "" : user.getNickName());
birthdayTv.setText(DateUtils.timestampToString2(user.getBirthday() * 1000));
sexTv.setText(user.getSex() == 0 ? "女" : "男");
// cityText.setText();
if (TextUtils.isEmpty(user.getPhone())) {
((View) (phoneTv.getParent())).setVisibility(View.GONE);
} else {
((View) (phoneTv.getParent())).setVisibility(View.VISIBLE);
phoneTv.setText(user.getPhone());
}
if (user.getShowLastLoginTime() > 0) {
((View) (onlineTv.getParent())).setVisibility(View.VISIBLE);
onlineTv.setText(TimeUtils.getFriendlyTimeDesc(this, user.getShowLastLoginTime()));
} else {
((View) (onlineTv.getParent())).setVisibility(View.GONE);
}
if (userId == mLoginUserId) {
btnNextStep.setVisibility(View.GONE);
} else {
btnNextStep.setVisibility(View.VISIBLE);
if (user.getFriends() == null) {// 陌生人
btnNextStep.setText("添加好友");
btnNextStep.setOnClickListener(new AddAttentionListener());
} else if (user.getFriends().getBlacklist() == 1) { // 需显示移除黑名单
btnNextStep.setText("移除黑名单");
// btnNextStep.setOnClickListener(new RemoveBlacklistListener());
} else if (user.getFriends().getIsBeenBlack() == 1) {// 需显示加入黑名单
btnNextStep.setText("加入黑名单");
} else if (user.getFriends().getStatus() == 2 || user.getFriends().getStatus() == 4) {// 好友
btnNextStep.setText("发送消息");
btnNextStep.setOnClickListener(new SendMsgListener());
} else {
btnNextStep.setText("添加好友");
btnNextStep.setOnClickListener(new AddAttentionListener());
}
}
}
private class SendMsgListener extends NoDoubleClickListener {
@Override
public void onNoDoubleClick(View view) {
Intent intent = ChatActivity.getIntent(UserDetailActivity.this, userId, user.getNickName(), 0);
startActivity(intent);
finish();
}
}
public class AddAttentionListener extends NoDoubleClickListener {
@Override
public void onNoDoubleClick(View view) {
}
} }
} }
...@@ -2,6 +2,7 @@ package com.rv.im.friend; ...@@ -2,6 +2,7 @@ package com.rv.im.friend;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -20,15 +21,11 @@ import com.rv.im.UserDetailActivity; ...@@ -20,15 +21,11 @@ import com.rv.im.UserDetailActivity;
import com.rv.im.adapter.FriendSearchListAdapter; import com.rv.im.adapter.FriendSearchListAdapter;
import com.rv.im.bean.AddResultBean; import com.rv.im.bean.AddResultBean;
import com.rv.im.bean.FriendSearchBean; import com.rv.im.bean.FriendSearchBean;
import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.FriendServiceImp;
import com.rv.im.db.table.ChatMessage; import com.rv.im.db.table.ChatMessage;
import com.rv.im.presenter.AddFriendPresenter; import com.rv.im.presenter.AddFriendPresenter;
import com.rv.im.xmpp.ListenerManager; import com.rv.im.xmpp.ListenerManager;
import com.rv.im.xmpp.listener.ChatMessageListener;
import com.rv.im.xmpp.listener.NewFriendListener; import com.rv.im.xmpp.listener.NewFriendListener;
/******* /*******
* *
* 添加好友功能 * 添加好友功能
...@@ -85,8 +82,6 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im ...@@ -85,8 +82,6 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
@Override @Override
public void add(FriendSearchBean.FriendSearItemBean item) { public void add(FriendSearchBean.FriendSearItemBean item) {
userId = item.getUserId();
userName = item.getNickname();
int fromAddType; int fromAddType;
if (!TextUtils.isEmpty(userName) && userName.contains(mKeyWord)) { if (!TextUtils.isEmpty(userName) && userName.contains(mKeyWord)) {
fromAddType = 5; fromAddType = 5;
...@@ -94,8 +89,10 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im ...@@ -94,8 +89,10 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
// 昵称不包含关键字的话就是通过手机号搜索出来的, // 昵称不包含关键字的话就是通过手机号搜索出来的,
fromAddType = 4; fromAddType = 4;
} }
userId = item.getUserId();
userName = item.getNickname();
startActivityForResult(RealAddFriendActivity.getIntent(getApplicationContext(), userId, userName, fromAddType), 10000);
mPresenter.addFriend(userId, fromAddType);
} }
}); });
recyclerview.setAdapter(adapter); recyclerview.setAdapter(adapter);
...@@ -140,118 +137,21 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im ...@@ -140,118 +137,21 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
@Override @Override
public void onNewFriendSendStateChange(String toUserId, ChatMessage message, int messageState) { public void onNewFriendSendStateChange(String toUserId, ChatMessage message, int messageState) {
if (messageState == ChatMessageListener.MESSAGE_SEND_SUCCESS) {
msgSendSuccess(message, message.getPackId());
} else if (messageState == ChatMessageListener.MESSAGE_SEND_FAILED) {
// msgSendFailed(message.getPacketId());
}
}
// xmpp消息发送成功最终回调到这,
// 在这里调整ui,
// 还有存本地数据库,
public void msgSendSuccess(ChatMessage message, String packet) {
if (addhaoyouid != null && addhaoyouid.equals(packet)) {
if (isyanzheng == 0) {// 需要验证
showToast("打招呼成功,静候回音");
FriendServiceImp.getInstance(this).addMessage(mPresenter.buildAddFriendMessage(userId, userName, message.getMessageType()));
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
} else if (isyanzheng == 1) {
showToast("好友添加成功");
// 数据库中添加好友
FriendServiceImp.getInstance(this).addMessage(mPresenter.buildAddFriendMessage(userId, userName, message.getMessageType()));
ChatMessageServiceImp.getInstance(this).addMessage(message);
// FriendDao.getInstance().updateFriendContent(mLoginUserId, mUser.getUserId(), InternationalizationHelper.getString("JXMessageObject_BeFriendAndChat"), XmppMessage.TYPE_TEXT, TimeUtils.sk_time_current_time());
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
// loadOthersInfoFromNet();
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
}
// 已经是好友了,mFriend不能为空,
// mFriend = FriendDao.getInstance().getFriend(mLoginUserId, mUserId);
}
// else if (addblackid != null && addblackid.equals(packet)) {
// Toast.makeText(getApplicationContext(), getString(R.string.add_blacklist_succ), Toast.LENGTH_SHORT).show();
// findViewById(R.id.look_bussic_cicle_rl).setVisibility(View.GONE);
// mNextStepBtn.setText(InternationalizationHelper.getString("REMOVE"));
// mNextStepBtn.setOnClickListener(new RemoveBlacklistListener());
//
// // 更新当前持有的Friend对象,
// mFriend.setStatus(Friend.STATUS_BLACKLIST);
// FriendDao.getInstance().updateFriendStatus(message.getOwnerId(), message.getUserId(), mFriend.getStatus());
// FriendHelper.addBlacklistExtraOperation(message.getOwnerId(), message.getUserId());
//
// ChatMessage addBlackChatMessage = new ChatMessage();
// addBlackChatMessage.setContent(InternationalizationHelper.getString("JXFriendObject_AddedBlackList") + " " + mUser.getNickName());
// addBlackChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, addBlackChatMessage);
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(mUser.getUserId(), Friend.STATUS_18);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// Intent intent = new Intent(this, MainActivity.class);
// startActivity(intent);
// finish();
// } else if (removeblack != null && removeblack.equals(packet)) {
// Toast.makeText(getApplicationContext(), InternationalizationHelper.getString("REMOVE_BLACKLIST"), Toast.LENGTH_SHORT).show();
// findViewById(R.id.look_bussic_cicle_rl).setVisibility(View.VISIBLE);
// mNextStepBtn.setText(InternationalizationHelper.getString("JXUserInfoVC_SendMseeage"));
// mNextStepBtn.setOnClickListener(new SendMsgListener());
//
// // 更新当前持有的Friend对象,
// if (mFriend != null) {
// mFriend.setStatus(Friend.STATUS_FRIEND);
// }
// NewFriendDao.getInstance().ascensionNewFriend(message, Friend.STATUS_FRIEND);
// FriendHelper.beAddFriendExtraOperation(message.getOwnerId(), message.getUserId());
//
// ChatMessage removeChatMessage = new ChatMessage();
// removeChatMessage.setContent(coreManager.getSelf().getNickName() + InternationalizationHelper.getString("REMOVE"));
// removeChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, removeChatMessage);
// /* FriendDao.getInstance().updateFriendContent(mLoginUserId, message.getUserId(),
// InternationalizationHelper.getString("JXMessageObject_BeFriendAndChat"), XmppMessage.TYPE_TEXT, TimeUtils.sk_time_current_time());*/
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(message.getUserId(), Friend.STATUS_24);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// loadOthersInfoFromNet();
// } else if (deletehaoyou != null && deletehaoyou.equals(packet)) {
// Toast.makeText(getApplicationContext(), InternationalizationHelper.getString("JXAlert_DeleteOK"), Toast.LENGTH_SHORT).show();
//
// FriendHelper.removeAttentionOrFriend(mLoginUserId, message.getUserId());
//
// ChatMessage deleteChatMessage = new ChatMessage();
// deleteChatMessage.setContent(InternationalizationHelper.getString("JXAlert_DeleteFirend") + " " + mUser.getNickName());
// deleteChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, deleteChatMessage);
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(mUser.getUserId(), Friend.STATUS_16);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// Intent intent = new Intent(this, MainActivity.class);
// startActivity(intent);
// finish();
// }
} }
@Override @Override
public boolean onNewFriend(ChatMessage message) { public boolean onNewFriend(ChatMessage message) {
// if(message.getMessageType() == MessageTypeEnum) // if(message.getMessageType() == MessageTypeEnum)
return false; return false;
} }
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 10000 && resultCode == RESULT_OK) {
setResult(RESULT_OK);
finish();
}
}
} }
package com.rv.im.friend;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.im.ImSetting;
import com.rv.im.R;
import com.rv.im.bean.AddResultBean;
import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.FriendServiceImp;
import com.rv.im.db.table.ChatMessage;
import com.rv.im.listener.NoDoubleClickListener;
import com.rv.im.presenter.RealAddFriendPresenter;
import com.rv.im.xmpp.ListenerManager;
import com.rv.im.xmpp.listener.ChatMessageListener;
import com.rv.im.xmpp.listener.NewFriendListener;
public class RealAddFriendActivity extends BaseStatusActivity<RealAddFriendPresenter> implements NewFriendListener {
private static final String KEY_USER_ID = "userid";
private static final String KEY_ADD_TYPE = "addtype";
private static final String KEY_USER_NAME = "username";
private EditText edtAddApply;
private EditText edtAddRemark;
private String userId;
private String userName;
private int fromAddType;
public static Intent getIntent(Context context, String userId, String userName, int fromAddType) {
Intent intent = new Intent(context, RealAddFriendActivity.class);
intent.putExtra(KEY_USER_ID, userId);
intent.putExtra(KEY_ADD_TYPE, fromAddType);
intent.putExtra(KEY_USER_NAME, userName);
return intent;
}
@Override
protected int setLayout() {
return R.layout.activity_real_add_friend;
}
@Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
titleView.setTitle("申请添加朋友");
titleView.setText(R.id.tv_title_right, "发送");
((TextView) titleView.findViewById(R.id.tv_title_right)).setTextColor(Color.WHITE);
titleView.findViewById(R.id.tv_title_right).setBackgroundResource(R.drawable.bg_btn_green_pre);
titleView.setChildClickListener(R.id.tv_title_right, new NoDoubleClickListener() {
@Override
public void onNoDoubleClick(View view) {
mPresenter.addFriend(userId, fromAddType);
}
});
ListenerManager.getInstance().addNewFriendListener(this);
userId = intent.getStringExtra(KEY_USER_ID);
fromAddType = intent.getIntExtra(KEY_ADD_TYPE, 6);
userName = intent.getStringExtra(KEY_USER_NAME);
edtAddApply = findViewById(R.id.edt_add_apply);
edtAddRemark = findViewById(R.id.edt_add_remark);
edtAddApply.setText((!TextUtils.isEmpty(ImSetting.getUserName())) ? "我是" + ImSetting.getUserName() : "你好");
if (!TextUtils.isEmpty(userName))
edtAddRemark.setText(userName);
}
@Override
public void onDestroy() {
super.onDestroy();
ListenerManager.getInstance().removeNewFriendListener(this);
}
private int isyanzheng;
private String addhaoyouid;
@Override
public void onShowResult(int requestType, BaseBean result) {
switch (requestType) {
case 0:
if (result != null) {
AddResultBean bean = (AddResultBean) result;
if (bean.resultCode == 1 && bean.getData() != null) {
if (bean.getData().getType() == 1 || bean.getData().getType() == 3) {
isyanzheng = 0;// 需要验证
// 需要验证就发送打招呼的消息,
ChatMessage message = mPresenter.doSayHello(edtAddApply.getText().toString().trim(), userName, userId);
addhaoyouid = message != null ? message.getPackId() : "";
} else if (bean.getData().getType() == 2 || bean.getData().getType() == 4) {// 已经是好友了
isyanzheng = 1;// 不需要验证
ChatMessage message = mPresenter.doSayAddFriend(userName, userId);
addhaoyouid = message != null ? message.getPackId() : "";
} else if (bean.getData().getType() == 5) {
showToast(getString(R.string.add_attention_failed));
}
}
}
break;
}
}
// xmpp消息发送成功最终回调到这,
// 在这里调整ui,
// 还有存本地数据库,
public void msgSendSuccess(ChatMessage message, String packet) {
if (addhaoyouid != null && addhaoyouid.equals(packet)) {
if (isyanzheng == 0) {// 需要验证
showToast("打招呼成功,静候回音");
FriendServiceImp.getInstance(this).addMessage(mPresenter.buildAddFriendMessage(userId, userName, message.getMessageType()));
setResult(RESULT_OK);
finish();
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
} else if (isyanzheng == 1) {
showToast("好友添加成功");
// 数据库中添加好友
FriendServiceImp.getInstance(this).addMessage(mPresenter.buildAddFriendMessage(userId, userName, message.getMessageType()));
ChatMessageServiceImp.getInstance(this).addMessage(message);
setResult(RESULT_OK);
finish();
// FriendDao.getInstance().updateFriendContent(mLoginUserId, mUser.getUserId(), InternationalizationHelper.getString("JXMessageObject_BeFriendAndChat"), XmppMessage.TYPE_TEXT, TimeUtils.sk_time_current_time());
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
// loadOthersInfoFromNet();
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
}
// 已经是好友了,mFriend不能为空,
// mFriend = FriendDao.getInstance().getFriend(mLoginUserId, mUserId);
}
// else if (addblackid != null && addblackid.equals(packet)) {
// Toast.makeText(getApplicationContext(), getString(R.string.add_blacklist_succ), Toast.LENGTH_SHORT).show();
// findViewById(R.id.look_bussic_cicle_rl).setVisibility(View.GONE);
// mNextStepBtn.setText(InternationalizationHelper.getString("REMOVE"));
// mNextStepBtn.setOnClickListener(new RemoveBlacklistListener());
//
// // 更新当前持有的Friend对象,
// mFriend.setStatus(Friend.STATUS_BLACKLIST);
// FriendDao.getInstance().updateFriendStatus(message.getOwnerId(), message.getUserId(), mFriend.getStatus());
// FriendHelper.addBlacklistExtraOperation(message.getOwnerId(), message.getUserId());
//
// ChatMessage addBlackChatMessage = new ChatMessage();
// addBlackChatMessage.setContent(InternationalizationHelper.getString("JXFriendObject_AddedBlackList") + " " + mUser.getNickName());
// addBlackChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, addBlackChatMessage);
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(mUser.getUserId(), Friend.STATUS_18);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// Intent intent = new Intent(this, MainActivity.class);
// startActivity(intent);
// finish();
// } else if (removeblack != null && removeblack.equals(packet)) {
// Toast.makeText(getApplicationContext(), InternationalizationHelper.getString("REMOVE_BLACKLIST"), Toast.LENGTH_SHORT).show();
// findViewById(R.id.look_bussic_cicle_rl).setVisibility(View.VISIBLE);
// mNextStepBtn.setText(InternationalizationHelper.getString("JXUserInfoVC_SendMseeage"));
// mNextStepBtn.setOnClickListener(new SendMsgListener());
//
// // 更新当前持有的Friend对象,
// if (mFriend != null) {
// mFriend.setStatus(Friend.STATUS_FRIEND);
// }
// NewFriendDao.getInstance().ascensionNewFriend(message, Friend.STATUS_FRIEND);
// FriendHelper.beAddFriendExtraOperation(message.getOwnerId(), message.getUserId());
//
// ChatMessage removeChatMessage = new ChatMessage();
// removeChatMessage.setContent(coreManager.getSelf().getNickName() + InternationalizationHelper.getString("REMOVE"));
// removeChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, removeChatMessage);
// /* FriendDao.getInstance().updateFriendContent(mLoginUserId, message.getUserId(),
// InternationalizationHelper.getString("JXMessageObject_BeFriendAndChat"), XmppMessage.TYPE_TEXT, TimeUtils.sk_time_current_time());*/
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(message.getUserId(), Friend.STATUS_24);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// loadOthersInfoFromNet();
// } else if (deletehaoyou != null && deletehaoyou.equals(packet)) {
// Toast.makeText(getApplicationContext(), InternationalizationHelper.getString("JXAlert_DeleteOK"), Toast.LENGTH_SHORT).show();
//
// FriendHelper.removeAttentionOrFriend(mLoginUserId, message.getUserId());
//
// ChatMessage deleteChatMessage = new ChatMessage();
// deleteChatMessage.setContent(InternationalizationHelper.getString("JXAlert_DeleteFirend") + " " + mUser.getNickName());
// deleteChatMessage.setTimeSend(TimeUtils.sk_time_current_time());
// FriendDao.getInstance().updateLastChatMessage(mLoginUserId, Friend.ID_NEW_FRIEND_MESSAGE, deleteChatMessage);
//
// NewFriendDao.getInstance().createOrUpdateNewFriend(message);
// NewFriendDao.getInstance().changeNewFriendState(mUser.getUserId(), Friend.STATUS_16);
// ListenerManager.getInstance().notifyNewFriend(mLoginUserId, message, true);
//
// CardcastUiUpdateUtil.broadcastUpdateUi(mContext);
//
// Intent intent = new Intent(this, MainActivity.class);
// startActivity(intent);
// finish();
// }
}
@Override
public void onNewFriendSendStateChange(String toUserId, ChatMessage message, int messageState) {
if (messageState == ChatMessageListener.MESSAGE_SEND_SUCCESS) {
msgSendSuccess(message, message.getPackId());
} else if (messageState == ChatMessageListener.MESSAGE_SEND_FAILED) {
// msgSendFailed(message.getPacketId());
}
}
@Override
public boolean onNewFriend(ChatMessage message) {
return false;
}
}
package com.rv.im.listener;
import android.view.View;
// 防止点击按钮 过快 || 多次点击 造成多次事件
public abstract class NoDoubleClickListener implements View.OnClickListener {
private static long lastClickTime = 0;
private static final int MIN_CLICK_DELAY_TIME = 800;
public abstract void onNoDoubleClick(View view);
@Override
public void onClick(View v) {
long currentTime = System.currentTimeMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoDoubleClick(v);
}
}
}
\ No newline at end of file
package com.rv.im.presenter;
public class RealAddFriendPresenter extends AddFriendPresenter {
}
package com.rv.im.util;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import android.widget.TextView;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@SuppressWarnings("deprecation")
public class TimeUtils {
// ///s 代表Simple日期格式:yyyy-MM-dd
// ///f 代表Full日期格式:yyyy-MM-dd hh:mm:ss
public static final SimpleDateFormat ss_format = new SimpleDateFormat("MM-dd");
public static final SimpleDateFormat s_format = new SimpleDateFormat("yyyy-MM-dd");
public static final SimpleDateFormat f_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdfNearby = new SimpleDateFormat("MM-dd HH:mm");
public static final SimpleDateFormat sk_format_1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
public static SimpleDateFormat friendly_format1 = new SimpleDateFormat("HH:mm");
public static SimpleDateFormat friendly_format2 = new SimpleDateFormat("MM-dd HH:mm");
private static SimpleDateFormat hm_formater = new SimpleDateFormat("HH:mm");
public static long s_str_2_long(String dateString) {
try {
Date d = s_format.parse(dateString);
return d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static long f_str_2_long(String dateString) {
try {
Date d = f_format.parse(dateString);
return d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static String ss_long_2_str(long timestamp) {
return ss_format.format(new Date(timestamp));
}
public static String s_long_2_str(long timestamp) {
return s_format.format(new Date(timestamp));
}
public static String f_long_2_str(long timestamp) {
return f_format.format(new Date(timestamp));
}
/**
* 获取字符串时间的年份
*
* @param dateString 格式为yyyy-MM-ss,或者yyyy-MM-dd HH:mm:ss
* @return
*/
public static int getYear(String dateString) {
try {
Date d = s_format.parse(dateString);
return d.getYear() + 1900;// 年份是基于格林威治时间,所以加上1900
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
/**
* 获取字符串时间的月份
*
* @param dateString 格式为yyyy-MM-ss,或者yyyy-MM-dd hh:mm:ss
* @return
*/
public static int getMonth(String dateString) {
try {
Date d = s_format.parse(dateString);
return d.getMonth();// 月份从0-11
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
// /////////////////////以上是通用的,下面为特殊需求的////////////////////////
// /**
// * 时间戳转换日期格式
// *
// * @param timestamp
// * 单位秒
// * @return
// */
// public static String getCurrentTime(long timestamp) {
// SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// return f.format(new Date(timestamp * 1000));
// }
/**
* 获取字符串时间的天
*
* @param dateString 格式为yyyy-MM-ss,或者yyyy-MM-dd hh:mm:ss
* @return
*/
public static int getDayOfMonth(String dateString) {
try {
Date d = s_format.parse(dateString);
return d.getDate();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public static int getHours(String timeString) {
SimpleDateFormat formart = new SimpleDateFormat("HH:mm:ss");
try {
Date date = formart.parse(timeString);
return date.getHours();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public static int getMinutes(String timeString) {
SimpleDateFormat formart = new SimpleDateFormat("HH:mm:ss");
try {
Date date = formart.parse(timeString);
return date.getMinutes();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public static int getSeconds(String timeString) {
SimpleDateFormat formart = new SimpleDateFormat("HH:mm:ss");
try {
Date date = formart.parse(timeString);
return date.getSeconds();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return 0;
}
public static String getCurrentTime() {
return f_format.format(new Date(System.currentTimeMillis()));
}
/**
* 在当前时间上加上多少毫秒,返回这个时间
*
* @param mask
* @return
*/
public static String getCurrentTimeMask(long mask) {
return f_format.format(new Date(System.currentTimeMillis() + mask));
}
/**
* 获取精简的日期
*
* @param time
* @return
*/
public static String getSimpleDate(String time) {
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = f_format.parse(time);
return formater.format(date);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
/**
* @param time
* @return
*/
public static String getSimpleDateTime(String time) {
SimpleDateFormat formater = new SimpleDateFormat("yy-MM-dd HH:mm");
Date date = null;
try {
date = f_format.parse(time);
return formater.format(date);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
public static String getSimpleTime(String time) {
SimpleDateFormat formater = new SimpleDateFormat("HH:mm");
Date date = null;
try {
date = f_format.parse(time);
return formater.format(date);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
public static String getChatSimpleDate(String time) {
SimpleDateFormat formater = new SimpleDateFormat("yy-MM-dd");
Date date = null;
try {
date = f_format.parse(time);
return formater.format(date);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
public static String getTimeHM(String time) {
SimpleDateFormat formater = new SimpleDateFormat("HH:mm");
Date date = null;
try {
date = f_format.parse(time);
return formater.format(date);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
}
public static String getTimeMMdd(long time) {
SimpleDateFormat formater = new SimpleDateFormat("MM-dd");
return formater.format(time * 1000);
}
/**
* 获取好友的时间显示
*
* @param time 秒级别的时间戳
* @return
*/
public static String getFriendlyTimeDesc(Context context, long time) {
String desc = "";
if (time == 0) {
return desc;
}
Date timeDate = new Date(time * 1000L);
Date nowDate = new Date();
long delaySeconds = nowDate.getTime() / 1000 - time;// 相差的秒数
if (delaySeconds < 10) {// 小于10秒,显示刚刚
//desc = context.getString(R.string.friendly_time_just_now);// 显示刚刚
desc = "刚刚";
} else if (delaySeconds <= 60) {// 小于1分钟,显示如“25秒前”
desc = delaySeconds + "秒前";
} else if (delaySeconds < 60 * 30) {// 小于30分钟,显示如“25分钟前”
desc = (delaySeconds / 60) + "分钟前";
} else if (delaySeconds < 60 * 60 * 24) {// 小于1天之内
if (nowDate.getDay() - timeDate.getDay() == 0) {// 同一天
desc = friendly_format1.format(timeDate);
} else {// 前一天
desc = "昨天" + " " + friendly_format1.format(timeDate);
}
} else if (delaySeconds < 60 * 60 * 24 * 2) {// 小于2天之内
if (nowDate.getDay() - timeDate.getDay() == 1 || nowDate.getDay() - timeDate.getDay() == -6) {// 昨天
desc = "昨天" + " " + friendly_format1.format(timeDate);
} else {// 前天
desc = "前天" + " " + friendly_format1.format(timeDate);
}
} else if (delaySeconds < 60 * 60 * 24 * 3) {// 小于三天
if (nowDate.getDay() - timeDate.getDay() == 2 || nowDate.getDay() - timeDate.getDay() == -5) {// 前天
desc = "前天" + " " + friendly_format1.format(timeDate);
}
// else 超过前天
}
if (TextUtils.isEmpty(desc)) {
desc = friendly_format2.format(timeDate);
}
return desc;
}
public static String sk_time_friendly_format2(long time) {
return friendly_format2.format(new Date(time * 1000));
}
public static String sk_time_s_long_2_str(long time) {
return s_long_2_str(time * 1000);
}
public static String skNearbyTimeString(long timestamp) {
return sdfNearby.format(new Date(timestamp * 1000));
}
public static String sk_time_ss_long_2_str(long time) {
return ss_long_2_str(time * 1000);
}
public static long sk_time_s_str_2_long(String dateString) {
return s_str_2_long(dateString) / 1000;
}
public static long sk_time_current_time() {
// 加上与服务器时间差值,
// long timeDifference = PreferenceUtils.getLong(MyApplication.getContext(), KEY_TIME_DIFFERENCE, 0L);
return System.currentTimeMillis();
}
public static String sk_time_long_to_hm_str(long time) {
try {
return hm_formater.format(new Date(time * 1000));
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
public static String sk_time_long_to_chat_time_str(long time) {
String date1 = sk_time_s_long_2_str(time);
String date2 = sk_time_s_long_2_str(System.currentTimeMillis() / 1000);
if (date1.compareToIgnoreCase(date2) == 0) {// 是同一天
return sk_time_long_to_hm_str(time);
} else {
return long_to_yMdHm_str(time * 1000);
}
}
// 日期加小时的字符串
public static String long_to_yMdHm_str(long time) {
return sk_format_1.format(new Date(time));
}
public static long sk_time_yMdHm_str_to_long(String time) {
try {
return sk_format_1.parse(time).getTime() / 1000;
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static int yMdHm_getYear(String dateString) {
try {
Date d = sk_format_1.parse(dateString);
return d.getYear() + 1900;// 年份是基于格林威治时间,所以加上1900
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static int yMdHm_getMonth(String dateString) {
try {
Date d = sk_format_1.parse(dateString);
return d.getMonth();// 月份从0-11
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static int yMdHm_getDayOfMonth(String dateString) {
try {
Date d = sk_format_1.parse(dateString);
return d.getDate();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static int yMdHm_getHours(String timeString) {
try {
Date date = sk_format_1.parse(timeString);
return date.getHours();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
public static int yMdHm_getMinutes(String timeString) {
try {
Date date = sk_format_1.parse(timeString);
return date.getMinutes();
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
/**
* @param textView
* @param time 时间戳/1000
* @return
*/
public static long getSpecialBeginTime(TextView textView, long time) {
long currentTime = System.currentTimeMillis() / 1000;
if (time > currentTime) {
time = currentTime;
}
textView.setText(sk_time_s_long_2_str(time));
return time;
}
// /**
// * @param textView
// * @param time 时间戳/1000
// * @return
// */
// public static long getSpecialEndTime(TextView textView, long time) {
// long currentTime = System.currentTimeMillis() / 1000;
// if (time == 0 || time > currentTime - 24 * 60 * 60) {
// textView.setText(InternationalizationHelper.getString("SO_FAR"));
// return 0;
// }
// textView.setText(sk_time_s_long_2_str(time));
// return time;
// }
public static int sk_time_age(long birthday) {
int age = (new Date().getYear()) - (new Date(birthday * 1000).getYear());
if (age < 0 || age > 100) {
return 25;
}
return age;
}
// public static void responseTime(long l) {
// //noinspection UnnecessaryLocalVariable
// long serverTime = l;
// // 接口没给时间会得到0, 或者老服务器时间是秒,差了一千倍也无视,
// if (serverTime < 1552978894754L) {
// return;
// }
// long localTime = System.currentTimeMillis();
// long timeDifference = serverTime - localTime;
// Log.e("TimeUtils", "timeDifference = " + timeDifference);
// PreferenceUtils.putLong(MyApplication.getContext(), KEY_TIME_DIFFERENCE, timeDifference);
// }
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="7dp" />
<solid android:color="@color/gray_f5f5f5" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="@dimen/dp_40"
android:paddingRight="@dimen/dp_40"
tools:context=".friend.RealAddFriendActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_20"
android:text="发送添加好友申请" />
<EditText
android:id="@+id/edt_add_apply"
android:layout_width="match_parent"
android:layout_height="@dimen/size_100"
android:layout_marginTop="@dimen/size_5"
android:background="@drawable/im_grap_circle_bg"
android:gravity="left|top"
android:padding="@dimen/dp_10"
android:textSize="@dimen/sp_12" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp40"
android:text="设置备注" />
<EditText
android:id="@+id/edt_add_remark"
android:layout_width="match_parent"
android:layout_height="@dimen/size_60"
android:layout_marginTop="@dimen/size_5"
android:background="@drawable/im_grap_circle_bg"
android:gravity="left|top"
android:padding="@dimen/dp_10"
android:textSize="@dimen/sp_12" />
</LinearLayout>
\ No newline at end of file
...@@ -252,6 +252,7 @@ ...@@ -252,6 +252,7 @@
</RelativeLayout> </RelativeLayout>
<Button <Button
android:layout_marginBottom="5dp"
android:id="@+id/next_step_btn" android:id="@+id/next_step_btn"
style="@style/BossGreenBtn" style="@style/BossGreenBtn"
android:layout_width="fill_parent" android:layout_width="fill_parent"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment