Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lify
RvApp
Commits
32cadb23
Commit
32cadb23
authored
Dec 20, 2019
by
jianglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Im的添加好友代码提交
parent
b303a9d6
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
848 additions
and
116 deletions
+848
-116
AndroidManifest.xml
plugin_im/src/main/AndroidManifest.xml
+2
-1
UserDetailActivity.java
plugin_im/src/main/java/com/rv/im/UserDetailActivity.java
+70
-2
AddFriendActivity.java
..._im/src/main/java/com/rv/im/friend/AddFriendActivity.java
+13
-113
RealAddFriendActivity.java
...src/main/java/com/rv/im/friend/RealAddFriendActivity.java
+228
-0
NoDoubleClickListener.java
...c/main/java/com/rv/im/listener/NoDoubleClickListener.java
+22
-0
RealAddFriendPresenter.java
...main/java/com/rv/im/presenter/RealAddFriendPresenter.java
+6
-0
TimeUtils.java
plugin_im/src/main/java/com/rv/im/util/TimeUtils.java
+453
-0
im_grap_circle_bg.xml
plugin_im/src/main/res/drawable/im_grap_circle_bg.xml
+8
-0
activity_real_add_friend.xml
plugin_im/src/main/res/layout/activity_real_add_friend.xml
+45
-0
activity_user_detail.xml
plugin_im/src/main/res/layout/activity_user_detail.xml
+1
-0
No files found.
plugin_im/src/main/AndroidManifest.xml
View file @
32cadb23
...
...
@@ -59,7 +59,8 @@
<activity
android:name=
".AddressListActivity"
/>
<activity
android:name=
".friend.AddFriendActivity"
/>
<activity
android:name=
".friend.NewFriendActivity"
/>
<activity
android:name=
".UserDetailActivity"
></activity>
<activity
android:name=
".UserDetailActivity"
/>
<activity
android:name=
".friend.RealAddFriendActivity"
></activity>
</application>
</manifest>
\ No newline at end of file
plugin_im/src/main/java/com/rv/im/UserDetailActivity.java
View file @
32cadb23
...
...
@@ -2,9 +2,9 @@ package com.rv.im;
import
android.content.Context
;
import
android.content.Intent
;
import
android.support.v7.app.AppCompatActivity
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.view.View
;
import
android.widget.Button
;
import
android.widget.TextView
;
...
...
@@ -12,8 +12,10 @@ import com.ruiwenliu.wrapper.base.BaseBean;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
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.util.DateUtils
;
import
com.rv.im.util.TimeUtils
;
import
com.rv.im.view.RoundImageView
;
public
class
UserDetailActivity
extends
BaseStatusActivity
<
UserDetailPresenter
>
{
...
...
@@ -35,6 +37,8 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
private
Button
btnNextStep
;
private
UserDetailBean
.
UserDetail
user
;
public
static
void
start
(
Context
ctx
,
String
userId
)
{
Intent
intent
=
new
Intent
(
ctx
,
UserDetailActivity
.
class
);
Bundle
bundle
=
new
Bundle
();
...
...
@@ -92,6 +96,7 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
case
0
:
if
(
result
!=
null
&&
result
.
resultCode
==
1
)
{
UserDetailBean
userDetailBean
=
(
UserDetailBean
)
result
;
user
=
userDetailBean
.
getData
();
updateUi
();
}
break
;
...
...
@@ -99,5 +104,68 @@ public class UserDetailActivity extends BaseStatusActivity<UserDetailPresenter>
}
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
)
{
}
}
}
plugin_im/src/main/java/com/rv/im/friend/AddFriendActivity.java
View file @
32cadb23
...
...
@@ -2,6 +2,7 @@ package com.rv.im.friend;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
android.text.TextUtils
;
...
...
@@ -20,15 +21,11 @@ import com.rv.im.UserDetailActivity;
import
com.rv.im.adapter.FriendSearchListAdapter
;
import
com.rv.im.bean.AddResultBean
;
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.presenter.AddFriendPresenter
;
import
com.rv.im.xmpp.ListenerManager
;
import
com.rv.im.xmpp.listener.ChatMessageListener
;
import
com.rv.im.xmpp.listener.NewFriendListener
;
/*******
*
* 添加好友功能
...
...
@@ -85,8 +82,6 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
@Override
public
void
add
(
FriendSearchBean
.
FriendSearItemBean
item
)
{
userId
=
item
.
getUserId
();
userName
=
item
.
getNickname
();
int
fromAddType
;
if
(!
TextUtils
.
isEmpty
(
userName
)
&&
userName
.
contains
(
mKeyWord
))
{
fromAddType
=
5
;
...
...
@@ -94,8 +89,10 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
// 昵称不包含关键字的话就是通过手机号搜索出来的,
fromAddType
=
4
;
}
userId
=
item
.
getUserId
();
userName
=
item
.
getNickname
();
startActivityForResult
(
RealAddFriendActivity
.
getIntent
(
getApplicationContext
(),
userId
,
userName
,
fromAddType
),
10000
);
mPresenter
.
addFriend
(
userId
,
fromAddType
);
}
});
recyclerview
.
setAdapter
(
adapter
);
...
...
@@ -140,118 +137,21 @@ public class AddFriendActivity extends BaseStatusActivity<AddFriendPresenter> im
@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());
}
}
// 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
public
boolean
onNewFriend
(
ChatMessage
message
)
{
// if(message.getMessageType() == MessageTypeEnum)
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
();
}
}
}
plugin_im/src/main/java/com/rv/im/friend/RealAddFriendActivity.java
0 → 100644
View file @
32cadb23
This diff is collapsed.
Click to expand it.
plugin_im/src/main/java/com/rv/im/listener/NoDoubleClickListener.java
0 → 100644
View file @
32cadb23
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
plugin_im/src/main/java/com/rv/im/presenter/RealAddFriendPresenter.java
0 → 100644
View file @
32cadb23
package
com
.
rv
.
im
.
presenter
;
public
class
RealAddFriendPresenter
extends
AddFriendPresenter
{
}
plugin_im/src/main/java/com/rv/im/util/TimeUtils.java
0 → 100644
View file @
32cadb23
This diff is collapsed.
Click to expand it.
plugin_im/src/main/res/drawable/im_grap_circle_bg.xml
0 → 100644
View file @
32cadb23
<?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
plugin_im/src/main/res/layout/activity_real_add_friend.xml
0 → 100644
View file @
32cadb23
<?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
plugin_im/src/main/res/layout/activity_user_detail.xml
View file @
32cadb23
...
...
@@ -252,6 +252,7 @@
</RelativeLayout>
<Button
android:layout_marginBottom=
"5dp"
android:id=
"@+id/next_step_btn"
style=
"@style/BossGreenBtn"
android:layout_width=
"fill_parent"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment