| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- package jiguang.chat.activity;
- import android.app.Dialog;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.os.Bundle;
- import android.text.TextUtils;
- import com.activeandroid.query.Update;
- import net.zoneland.x.bpm.mobile.v1.zoneXBPM.R;
- import cn.jpush.im.android.api.JMessageClient;
- import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
- import cn.jpush.im.android.api.callback.GetUserInfoCallback;
- import cn.jpush.im.android.api.model.Conversation;
- import cn.jpush.im.android.api.model.GroupInfo;
- import cn.jpush.im.android.api.model.UserInfo;
- import cn.jpush.im.android.eventbus.EventBus;
- import jiguang.chat.application.JGApplication;
- import jiguang.chat.controller.FriendInfoController;
- import jiguang.chat.database.FriendEntry;
- import jiguang.chat.entity.Event;
- import jiguang.chat.entity.EventType;
- import jiguang.chat.utils.DialogCreator;
- import jiguang.chat.utils.HandleResponseCode;
- import jiguang.chat.utils.NativeImageLoader;
- import jiguang.chat.view.FriendInfoView;
- /**
- * Created by ${chenyn} on 2017/3/22.
- */
- public class FriendInfoActivity extends BaseActivity {
- private String mTargetId;
- private String mTargetAppKey;
- private boolean mIsFromContact;
- private FriendInfoView mFriendInfoView;
- private UserInfo mUserInfo;
- private FriendInfoController mFriendInfoController;
- private long mGroupId;
- private String mTitle;
- private boolean mIsGetAvatar = false;
- private boolean mIsAddFriend = false;
- private boolean mIsFromSearch = false;
- private boolean mFromGroup = false;
- private String mUserID;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_friend_info);
- mFriendInfoView = (FriendInfoView) findViewById(R.id.friend_info_view);
- mTargetId = getIntent().getStringExtra(JGApplication.TARGET_ID);
- mTargetAppKey = getIntent().getStringExtra(JGApplication.TARGET_APP_KEY);
- mUserID = getIntent().getStringExtra("targetId");
- if (mTargetAppKey == null) {
- mTargetAppKey = JMessageClient.getMyInfo().getAppKey();
- }
- mFriendInfoView.initModel(this);
- mFriendInfoController = new FriendInfoController(mFriendInfoView, this);
- mFriendInfoView.setListeners(mFriendInfoController);
- mFriendInfoView.setOnChangeListener(mFriendInfoController);
- mIsFromContact = getIntent().getBooleanExtra("fromContact", false);
- mIsFromSearch = getIntent().getBooleanExtra("fromSearch", false);
- mIsAddFriend = getIntent().getBooleanExtra("addFriend", false);
- mFromGroup = getIntent().getBooleanExtra("group_grid", false);
- //从通讯录中点击过来
- if (mIsFromContact || mIsFromSearch || mFromGroup || mIsAddFriend) {
- updateUserInfo();
- } else {
- mGroupId = getIntent().getLongExtra(JGApplication.GROUP_ID, 0);
- Conversation conv;
- if (mGroupId == 0) {
- conv = JMessageClient.getSingleConversation(mTargetId, mTargetAppKey);
- mUserInfo = (UserInfo) conv.getTargetInfo();
- } else {
- conv = JMessageClient.getGroupConversation(mGroupId);
- GroupInfo groupInfo = (GroupInfo) conv.getTargetInfo();
- mUserInfo = groupInfo.getGroupMemberInfo(mTargetId, mTargetAppKey);
- }
- //先从Conversation里获得UserInfo展示出来
- mFriendInfoView.initInfo(mUserInfo);
- updateUserInfo();
- }
- }
- private void updateUserInfo() {
- final Dialog dialog = DialogCreator.createLoadingDialog(FriendInfoActivity.this,
- FriendInfoActivity.this.getString(R.string.jmui_loading));
- dialog.show();
- if (TextUtils.isEmpty(mTargetId) && !TextUtils.isEmpty(mUserID)) {
- mTargetId = mUserID;
- }
- JMessageClient.getUserInfo(mTargetId, mTargetAppKey, new GetUserInfoCallback() {
- @Override
- public void gotResult(int responseCode, String responseMessage, UserInfo info) {
- dialog.dismiss();
- if (responseCode == 0) {
- //拉取好友信息时候要更新数据库中的nickName.因为如果对方修改了nickName我们是无法感知的.如果不在拉取信息
- //时候更新数据库的话会影响到搜索好友的nickName, 注意要在没有备注名并且有昵称时候去更新.因为备注名优先级更高
- new Update(FriendEntry.class).set("DisplayName=?", info.getDisplayName()).where("Username=?", mTargetId).execute();
- new Update(FriendEntry.class).set("NickName=?", info.getNickname()).where("Username=?", mTargetId).execute();
- new Update(FriendEntry.class).set("NoteName=?", info.getNotename()).where("Username=?", mTargetId).execute();
- if (info.getAvatarFile() != null) {
- new Update(FriendEntry.class).set("Avatar=?", info.getAvatarFile().getAbsolutePath()).where("Username=?", mTargetId).execute();
- }
- mUserInfo = info;
- mFriendInfoController.setFriendInfo(info);
- mTitle = info.getNotename();
- if (TextUtils.isEmpty(mTitle)) {
- mTitle = info.getNickname();
- }
- mFriendInfoView.initInfo(info);
- } else {
- HandleResponseCode.onHandle(FriendInfoActivity.this, responseCode, false);
- }
- }
- });
- }
- public void startChatActivity() {
- if (mIsFromContact || mIsAddFriend || mIsFromSearch || mFromGroup) {
- Intent intent = new Intent(this, ChatActivity.class);
- String title = mUserInfo.getNotename();
- if (TextUtils.isEmpty(title)) {
- title = mUserInfo.getNickname();
- if (TextUtils.isEmpty(title)) {
- title = mUserInfo.getUserName();
- }
- }
- intent.putExtra(JGApplication.CONV_TITLE, title);
- intent.putExtra(JGApplication.TARGET_ID, mUserInfo.getUserName());
- intent.putExtra(JGApplication.TARGET_APP_KEY, mUserInfo.getAppKey());
- startActivity(intent);
- } else {
- if (mGroupId != 0) {
- Intent intent = new Intent();
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.putExtra(JGApplication.TARGET_ID, mTargetId);
- intent.putExtra(JGApplication.TARGET_APP_KEY, mTargetAppKey);
- intent.setClass(this, ChatActivity.class);
- startActivity(intent);
- } else {
- Intent intent = new Intent();
- intent.putExtra("returnChatActivity", true);
- intent.putExtra(JGApplication.CONV_TITLE, mTitle);
- setResult(JGApplication.RESULT_CODE_FRIEND_INFO, intent);
- }
- }
- Conversation conv = JMessageClient.getSingleConversation(mTargetId, mTargetAppKey);
- //如果会话为空,使用EventBus通知会话列表添加新会话
- if (conv == null) {
- conv = Conversation.createSingleConversation(mTargetId, mTargetAppKey);
- EventBus.getDefault().post(new Event.Builder()
- .setType(EventType.createConversation)
- .setConversation(conv)
- .build());
- }
- finish();
- }
- public UserInfo getUserInfo() {
- return mUserInfo;
- }
- public String getUserName() {
- return mUserInfo.getUserName();
- }
- public String getTargetAppKey() {
- return mTargetAppKey;
- }
- //点击头像预览大图
- public void startBrowserAvatar() {
- if (mUserInfo != null && !TextUtils.isEmpty(mUserInfo.getAvatar())) {
- if (mIsGetAvatar) {
- //如果缓存了图片,直接加载
- Bitmap bitmap = NativeImageLoader.getInstance().getBitmapFromMemCache(mUserInfo.getUserName());
- if (bitmap != null) {
- Intent intent = new Intent();
- intent.putExtra("browserAvatar", true);
- intent.putExtra("avatarPath", mUserInfo.getAvatarFile().getAbsolutePath());
- intent.setClass(this, BrowserViewPagerActivity.class);
- startActivity(intent);
- }
- } else {
- final Dialog dialog = DialogCreator.createLoadingDialog(this, this.getString(R.string.jmui_loading));
- dialog.show();
- mUserInfo.getBigAvatarBitmap(new GetAvatarBitmapCallback() {
- @Override
- public void gotResult(int status, String desc, Bitmap bitmap) {
- if (status == 0) {
- mIsGetAvatar = true;
- //缓存头像
- NativeImageLoader.getInstance().updateBitmapFromCache(mUserInfo.getUserName(), bitmap);
- Intent intent = new Intent();
- intent.putExtra("browserAvatar", true);
- intent.putExtra("avatarPath", mUserInfo.getUserName());
- intent.setClass(FriendInfoActivity.this, BrowserViewPagerActivity.class);
- startActivity(intent);
- }
- dialog.dismiss();
- }
- });
- }
- }
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (resultCode == RESULT_CANCELED) {
- return;
- }
- if (resultCode == JGApplication.RESULT_CODE_EDIT_NOTENAME) {
- mTitle = data.getStringExtra(JGApplication.NOTENAME);
- FriendEntry friend = FriendEntry.getFriend(JGApplication.getUserEntry(), mTargetId, mTargetAppKey);
- if (null != friend) {
- friend.displayName = mTitle;
- friend.save();
- }
- }
- }
- //将获得的最新的昵称返回到聊天界面
- @Override
- public void onBackPressed() {
- Intent intent = new Intent();
- intent.putExtra(JGApplication.CONV_TITLE, mTitle);
- setResult(JGApplication.RESULT_CODE_FRIEND_INFO, intent);
- finish();
- super.onBackPressed();
- }
- public int getWidth() {
- return mWidth;
- }
- }
|