diff --git a/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt b/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt index adf30b825..627e93dc7 100644 --- a/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/mango/moshen/home/fragment/MeFragment.kt @@ -33,6 +33,7 @@ import com.mango.core.user.bean.UserInfo import com.mango.core.user.event.LoginUserInfoUpdateEvent import com.mango.core.utils.CurrentTimeUtils import com.mango.core.utils.StarUtils +import com.mango.core.utils.toast import com.mango.moshen.R import com.mango.moshen.UIHelper import com.mango.moshen.avroom.activity.AVRoomActivity @@ -64,6 +65,7 @@ import com.mango.moshen.utils.UserUtils import com.mango.moshen.vip.VipMainActivity import com.mango.moshen.vip.VipMainViewModel import com.mango.xchat_android_library.utils.FormatUtils +import com.netease.nim.uikit.common.util.sys.ClipboardUtil import com.netease.nim.uikit.common.util.sys.TimeUtil import com.trello.rxlifecycle3.android.FragmentEvent import io.reactivex.Observable @@ -543,6 +545,13 @@ class MeFragment : BaseFragment(), View.OnClickListener { ) } R.id.ll_pm_mode -> PatriarchModeActivity.start(mContext) + R.id.tv_user_id -> { + mUserInfo?.let { + ClipboardUtil.clipboardCopyText(it.erbanNo.toString()) + } ?: run { + "数据加载中,请稍后再试!".toast() + } + } else -> {} } } diff --git a/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java b/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java index 09462edd6..b3ec971f0 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java +++ b/app/src/main/java/com/mango/moshen/ui/im/MessageListPanelEx.java @@ -1115,7 +1115,7 @@ public class MessageListPanelEx { } private void onCopyMessageItem(IMMessage item) { - ClipboardUtil.clipboardCopyText(container.activity, item.getContent()); + ClipboardUtil.clipboardCopyText(item.getContent()); } // 长按菜单项--删除 diff --git a/app/src/main/java/com/mango/moshen/ui/user/UserInfoActivity.java b/app/src/main/java/com/mango/moshen/ui/user/UserInfoActivity.java index e27b5430b..12a279633 100644 --- a/app/src/main/java/com/mango/moshen/ui/user/UserInfoActivity.java +++ b/app/src/main/java/com/mango/moshen/ui/user/UserInfoActivity.java @@ -20,6 +20,7 @@ import androidx.viewpager.widget.ViewPager; import com.google.android.material.appbar.AppBarLayout; import com.netease.nim.uikit.StatusBarUtil; +import com.netease.nim.uikit.common.util.sys.ClipboardUtil; import com.netease.nim.uikit.impl.cache.NimUserInfoCache; import com.netease.nimlib.sdk.RequestCallbackWrapper; import com.netease.nimlib.sdk.uinfo.model.NimUserInfo; @@ -179,6 +180,7 @@ public class UserInfoActivity extends BaseBindingActivity() { @Override public void onSubscribe(Disposable d) { @@ -772,7 +776,11 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe UserInfoActivity.Companion.start(context, uid); dismiss(); break; + case R.id.tv_erban_id: + ClipboardUtil.clipboardCopyText(String.valueOf(userInfo.getErbanNo())); + break; default: + break; } } @@ -1107,7 +1115,7 @@ public class UserInfoDialog extends AppCompatDialog implements View.OnClickListe return; } - if (AvRoomDataManager.get().haveStartDragon) { + if (AvRoomDataManager.get().haveStartDragon) { new DialogManager(context).showOkCancelDialog("你正在交友匹配中,此操作代表你放弃本局匹配展示,确定进行此操作?", false, new DialogManager.OkCancelDialogListener() { @Override public void onCancel() { diff --git a/app/src/main/res/drawable-xhdpi/ic_copy_id.png b/app/src/main/res/drawable-xhdpi/ic_copy_id.png new file mode 100644 index 000000000..e69a7bf1d Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_copy_id.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_copy_id_white.png b/app/src/main/res/drawable-xhdpi/ic_copy_id_white.png new file mode 100644 index 000000000..c2de0ddff Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_copy_id_white.png differ diff --git a/app/src/main/res/layout/activity_user_info.xml b/app/src/main/res/layout/activity_user_info.xml index 699421016..7608fd427 100644 --- a/app/src/main/res/layout/activity_user_info.xml +++ b/app/src/main/res/layout/activity_user_info.xml @@ -177,6 +177,7 @@ android:gravity="center_vertical" android:includeFontPadding="false" android:maxLines="1" + android:drawableEnd="@drawable/ic_copy_id_white" android:textColor="@color/white" android:textSize="11dp" tools:text="ID:7958626" /> diff --git a/app/src/main/res/layout/dialog_user_info.xml b/app/src/main/res/layout/dialog_user_info.xml index 1057f50eb..756895c28 100644 --- a/app/src/main/res/layout/dialog_user_info.xml +++ b/app/src/main/res/layout/dialog_user_info.xml @@ -246,6 +246,7 @@ android:layout_height="wrap_content" android:textColor="@color/white_transparent_50" android:textSize="@dimen/sp_12" + android:drawableEnd="@drawable/ic_copy_id_white" tools:text="ID123456" /> diff --git a/app/src/main/res/layout/fragment_me.xml b/app/src/main/res/layout/fragment_me.xml index 18cce1f47..515265efc 100644 --- a/app/src/main/res/layout/fragment_me.xml +++ b/app/src/main/res/layout/fragment_me.xml @@ -47,8 +47,8 @@ android:layout_height="wrap_content" android:layout_marginTop="10dp" android:onClick="@{click}" - app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@id/me_item_setting"> @@ -101,8 +101,8 @@ android:layout_height="wrap_content" android:drawablePadding="5dp" android:ellipsize="end" - android:maxLines="1" android:maxLength="10" + android:maxLines="1" android:text="@{userInfo.nick}" android:textColor="@color/text_title_white" android:textSize="@dimen/sp_16" @@ -129,9 +129,10 @@ android:id="@+id/tv_user_id" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:drawablePadding="4dp" + android:drawableEnd="@drawable/ic_copy_id" android:gravity="center" android:maxLines="1" + android:onClick="@{click}" android:textColor="@color/text_secondary_4f516a" android:textSize="@dimen/dp_13" tools:ignore="SpUsage" @@ -152,20 +153,6 @@ tools:ignore="ContentDescription" tools:src="@drawable/ic_gender_female" /> - + + + diff --git a/nim_uikit/src/com/netease/nim/uikit/business/session/module/list/MessageListPanelEx.java b/nim_uikit/src/com/netease/nim/uikit/business/session/module/list/MessageListPanelEx.java index bfa518561..54b67299b 100644 --- a/nim_uikit/src/com/netease/nim/uikit/business/session/module/list/MessageListPanelEx.java +++ b/nim_uikit/src/com/netease/nim/uikit/business/session/module/list/MessageListPanelEx.java @@ -1093,7 +1093,7 @@ public class MessageListPanelEx { } private void onCopyMessageItem(IMMessage item) { - ClipboardUtil.clipboardCopyText(container.activity, item.getContent()); + ClipboardUtil.clipboardCopyText(item.getContent()); } // 长按菜单项--删除 diff --git a/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ClipboardUtil.java b/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ClipboardUtil.java index 9f45e3647..195160af2 100644 --- a/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ClipboardUtil.java +++ b/nim_uikit/src/com/netease/nim/uikit/common/util/sys/ClipboardUtil.java @@ -1,19 +1,23 @@ package com.netease.nim.uikit.common.util.sys; -import android.content.Context; -import android.text.ClipboardManager; +import static android.content.Context.CLIPBOARD_SERVICE; + +import android.content.ClipData; +import android.content.ClipboardManager; + +import com.mango.xchat_android_library.utils.SingleToastUtil; +import com.mango.xchat_android_library.utils.config.BasicConfig; public class ClipboardUtil { - public static final void clipboardCopyText(Context context, CharSequence text) { - ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - if (cm != null) { - cm.setText(text); - } + + public static void clipboardCopyText(CharSequence text) { + ClipboardManager myClipboard; + myClipboard = (android.content.ClipboardManager) BasicConfig.INSTANCE.getAppContext().getSystemService(CLIPBOARD_SERVICE); + ClipData myClip; + myClip = ClipData.newPlainText("text", text); + if (myClipboard != null) + myClipboard.setPrimaryClip(myClip); + SingleToastUtil.showToast("复制成功"); } - public static final int clipboardTextLength(Context context) { - ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - CharSequence text = cm != null ? cm.getText() : null; - return text != null ? text.length() : 0; - } }