极光IM简单代码(代码比较清晰)

之前博客都删啦 im是现在比较火的技术 无聊写个极光简单demo 下面直接看代码

Application.java
onCreate方法加入以下代码:
JMessageClient.init(getApplicationContext(), true);
MainActivity.java
public class MainActivity extends AppCompatActivity {
private MainActivity mContext;
private UserInfo userInfo;
/**
* 创建聊天室
/
private Conversation mConv;
/
*
* 获取好友列表
*/
private List userInfoList;

private RecyclerView rv_list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mContext = this;


    login();

/**

  • 获取某个用户信息
    */
    // JMessageClient.getUserInfo(“用户名”, new GetUserInfoCallback() {
    // @Override
    // public void gotResult(int code, String message, UserInfo userInfo) {
    // if (code == 0){
    // MainActivity.this.userInfo = userInfo;
    // Toast.makeText(mContext,“获取用户列表成功”,Toast.LENGTH_LONG).show();
    // }else {
    // Toast.makeText(mContext,“获取用户列表失败”,Toast.LENGTH_LONG).show();
    // }
    //
    // }
    // });

    }

    /**

    • 聊天界面
      */
      private void initRv() {

      rv_list = findViewById(R.id.rv_list);
      LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
      rv_list.setLayoutManager(linearLayoutManager);
      rv_list.addItemDecoration(new RecyclerView.ItemDecoration() {
      @Override
      public void getItemOffsets(@NonNull Rect outRect, int itemPosition, @NonNull RecyclerView parent) {
      super.getItemOffsets(outRect, itemPosition, parent);
      outRect.top = 10;
      }
      });
      MessageAdapter messageAdapter = new MessageAdapter(mContext,mMsgList);
      rv_list.setAdapter(messageAdapter);
      // messageAdapter.notifyDataSetChanged();

    }

    private void init(){

     /**
      * 单聊发送短信
      */
     Message message = JMessageClient.createSingleTextMessage(userInfo.getUserName(), userInfo.getAppKey(), "这是一条短信");
     message.setOnSendCompleteCallback(new BasicCallback() {
         @Override
         public void gotResult(int code, String message) {
             if (code == 0){
                 Toast.makeText(mContext,"发送短信成功",Toast.LENGTH_LONG).show();
             }else {
                 Toast.makeText(mContext,"发送短信失败",Toast.LENGTH_LONG).show();
             }
    
         }
     });
    

    }

    @Override
    protected void onDestroy() {
    super.onDestroy();
    /**
    * 退出极光im登录
    */
    JMessageClient.logout();
    }

    /**

    • 登录im
    • @param view
      */
      public void toLogin(View view) {
      login();

    }

    /**

    • 登录极光im
      /
      private void login(){
      /
      *
      • im登录
        */
        JMessageClient.login(“用户名”, “密码”, new BasicCallback() {
        @Override
        public void gotResult(int code, String message) {
        if (code == 0){
        Toast.makeText(mContext,“登录状态:登录成功”,Toast.LENGTH_LONG).show();
        //获取当前用户信息
        userInfo = JMessageClient.getMyInfo();
        //创建聊天室
        createRoom();
        }else {
        Toast.makeText(mContext,“登录状态:登录失败”,Toast.LENGTH_LONG).show();
        }

        }
        });
        }

    /**

    • 获取好友列表
    • @param view
      */
      public void toGetUserList(View view) {
      ContactManager.getFriendList(new GetUserInfoListCallback() {
      @Override
      public void gotResult(int responseCode, String responseMessage, List userInfoList) {
      if (0 == responseCode) {
      //获取好友列表成功
      MainActivity.this.userInfoList = userInfoList;
      //获取好友列表失败
      Toast.makeText(mContext,“获取好友列表成功”,Toast.LENGTH_LONG).show();
      } else {
      //获取好友列表失败
      Toast.makeText(mContext,“获取好友列表失败”,Toast.LENGTH_LONG).show();
      }
      }
      });

    }

    /**
    *添加

    • @param userName 用户名
    • @param appKey appkey
    • @param message 申请理由
      */
      private void sendUser(String userName,String appKey,String message){
      ContactManager.sendInvitationRequest(userName, appKey, message, new BasicCallback() {
      @Override
      public void gotResult(int responseCode, String responseMessage) {
      if (0 == responseCode) {
      //好友请求请求发送成功
      Toast.makeText(mContext,“发送添加好友成功”,Toast.LENGTH_LONG).show();
      } else {
      //好友请求发送失败
      Toast.makeText(mContext,“发送添加好友失败”,Toast.LENGTH_LONG).show();
      }
      }
      });
      }

    public void toSendUser(View view) {
    sendUser(userInfo.getUserName(),userInfo.getAppKey(),“活着2020”);
    }

    /**

    • 通过搜索用户名获取用户信息 然后进行添加好友
      */
      private void getUserInfo(String userName){
      JMessageClient.getUserInfo(userName, new GetUserInfoCallback() {
      @Override
      public void gotResult(int code, String message, UserInfo userInfo) {
      if (code == 0){
      UserInfo userData = userInfo;
      Toast.makeText(mContext,“搜索好友成功”,Toast.LENGTH_LONG).show();
      }else {
      Toast.makeText(mContext,“搜索好友失败”,Toast.LENGTH_LONG).show();
      }

       }
      

      });
      }

    public void toSearchUser(View view) {
    getUserInfo(“用户名”);
    }

    private int mOffset = 18;
    private List mMsgList = new ArrayList();//所有消息列表
    /**

    • 获取好友发送的信息
      */
      public void GetMessage(){
      mMsgList = mConv.getMessagesFromNewest(0, mOffset);
      switch (mMsgList.get(0).getContentType()) {
      case text:
      if (mMsgList != null){
      initRv();
      }
      String text = ((TextContent) mMsgList.get(0).getContent()).getText();
      //当前接收的是文本
      Toast.makeText(mContext,“接收的第一条短信是” + text,Toast.LENGTH_LONG).show();
      Log.e(“好友发送的信息”,mMsgList + “”);
      break;
      }

    }

    public void GetSendMessage(View view) {
    GetMessage();
    }

    /**

    • 创建单聊室
    • @param view
      */
      public void toCreateRoom(View view) {
      createRoom();
      }

    /**

    • 创建单聊
      /
      private void createRoom(){
      /
      *

      • 获取单个单聊会话
        */
        mConv = JMessageClient.getSingleConversation(“好友用户名”, “appkey”);

      /**

      • 没有获取会话 就创建一个会话
      • 创建单聊会话
        /
        if (mConv == null){
        mConv = Conversation.createSingleConversation(“好友用户名”,“appkey”);
        }
        /
        *
      • 判断当前是否为单聊
        */
        if (mConv.getType() == ConversationType.single){
        Toast.makeText(mContext,“当前是单聊”,Toast.LENGTH_LONG).show();
        }
        GetMessage();
        }
        }

MessageAdapter.java

/**

  • @author Liu

  • @Description 聊天消息

  • @creat time 2021/2/7 16:12
    */
    public class MessageAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List mMsgList;

    /**

    • 左边聊天框
      /
      private final static int LEFT_VIEW_TYPE = 1;
      /
      *
    • 右边聊天框
      */
      private final static int RIGHT_VIEW_TYPE = 2;

    private Context mContext;

    public MessageAdapter (Context context,List msgList){
    this.mContext = context;
    this.mMsgList = msgList;

    }

    public List getmMsgList() {
    return mMsgList == null ? new ArrayList<>() : mMsgList;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    /**
    * 接受短信方
    /
    if (viewType == LEFT_VIEW_TYPE){
    View view = LayoutInflater.from(parent.getContext())
    .inflate(R.layout.item_left,parent,false);
    LeftViewHolder holder = new LeftViewHolder(view);//view表示子项
    return holder;
    }
    /
    *
    * 发送短信方
    */
    else {
    View view = LayoutInflater.from(parent.getContext())
    .inflate(R.layout.item_right,parent,false);
    RightViewHolder holder = new RightViewHolder(view);//view表示子项
    return holder;
    }

    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
    if (holder instanceof LeftViewHolder){
    ((LeftViewHolder) holder).tv_left_txt.setText(((TextContent) mMsgList.get(position)
    .getContent()).getText());

     }else if (holder instanceof RightViewHolder){
         ((RightViewHolder) holder).tv_right_txt.setText(((TextContent) mMsgList.get(position)
                 .getContent()).getText());
     }
    

    }

    @Override
    public int getItemViewType(int position) {
    /**
    *
    * 判断显示左边聊天框还是右边聊天框
    */
    return mMsgList.get(position).getDirect() == MessageDirect.receive
    ? LEFT_VIEW_TYPE:RIGHT_VIEW_TYPE;
    }

    @Override
    public int getItemCount() {
    return mMsgList.size();
    }

    public class LeftViewHolder extends RecyclerView.ViewHolder{
    private TextView tv_left_txt;

     public LeftViewHolder(@NonNull View itemView) {
         super(itemView);
         tv_left_txt = itemView.findViewById(R.id.tv_left_txt);
     }
    

    }
    public class RightViewHolder extends RecyclerView.ViewHolder{
    private TextView tv_right_txt;

     public RightViewHolder(@NonNull View itemView) {
         super(itemView);
         tv_right_txt = itemView.findViewById(R.id.tv_right_txt);
     }
    

    }
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<Button
    android:onClick="toLogin"
    android:text="登录"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="OnClick" />

<Button
    android:onClick="toGetUserList"
    android:text="获取好友列表"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="OnClick" />

<Button
    android:onClick="toSendUser"
    android:text="发送添加好友"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="OnClick" />

<Button
    android:onClick="toSearchUser"
    android:text="搜索好友"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="OnClick" />
<Button
    android:onClick="GetSendMessage"
    android:text="获取好友发送信息"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="OnClick" />

<Button
    android:onClick="toCreateRoom"
    android:text="创建聊天室"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:ignore="OnClick" />

    <androidx.recyclerview.widget.RecyclerView
        android:paddingTop="20dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingBottom="10dp"
        android:id="@+id/rv_list"
        android:scrollbars="none"
        android:overScrollMode="never"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
item_left.xml <?xml version="1.0" encoding="utf-8"?>
<TextView
    android:id="@+id/tv_left_txt"
    android:paddingLeft="5dp"
    android:layout_gravity="center"
    android:text="这是一条短信"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

item_right.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView
    android:id="@+id/tv_right_txt"
    android:paddingLeft="5dp"
    android:layout_gravity="center"
    android:text="这是一条短信"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
<ImageView
    android:src="@mipmap/ic_launcher"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginLeft="5dp" />

点击下载demo链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值