使用环信完成一个简单的登录,退出,发消息

本文档详细介绍了如何在Android应用中集成环信即时通讯SDK,包括配置清单文件、创建EMOptions实例、监听消息接收及发送等关键步骤,帮助开发者快速实现聊天功能。

先写清单文件


<service android:name="com.hyphenate.chat.EMChatService" android:exported="true"/>
<service android:name="com.hyphenate.chat.EMJobService"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:exported="true"
    />
<!-- 声明SDK所需的receiver -->
<receiver android:name="com.hyphenate.chat.EMMonitorReceiver">
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <data android:scheme="package"/>
    </intent-filter>
    <!-- 可选filter -->
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="android.intent.action.USER_PRESENT" />
    </intent-filter>
</receiver>
<meta-data android:name="EASEMOB_APPKEY"
    android:value="你的AppKey" />

写一个类继承Application

@Override
public void onCreate() {
    super.onCreate();
    EMOptions options = new EMOptions();
    //初始化
    EMClient.getInstance().init(this, options);
    EMClient.getInstance().setDebugMode(true);
}

之后写主类


private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = findViewById(R.id.tv);
    findViewById(R.id.btn1).setOnClickListener(this);
    findViewById(R.id.btn2).setOnClickListener(this);
    findViewById(R.id.btn3).setOnClickListener(this);
    EMClient.getInstance().chatManager().addMessageListener(msgListener);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    EMClient.getInstance().chatManager().removeMessageListener(msgListener);
}

@Override
public void onClick(View v) {
    int id = v.getId();
    if (R.id.btn1 == id){
        //登录
        login();
    }else if (R.id.btn2 == id){
        //退出
        logout();
    }else {
        //发消息
        sendMsg();
    }
}

//登录
private void login(){
    EMClient.getInstance().login("用户名", "密码", new EMCallBack() {
        @Override
        public void onSuccess() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                }
            });

        }

        @Override
        public void onError(int code, String error) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                }
            });
        }

        @Override
        public void onProgress(int progress, String status) {

        }
    });
}
//退出
private void logout(){
    new Thread(){

        @Override
        public void run() {
            super.run();
            EMClient.getInstance().logout(true);
        }
    }.start();
}
//发消息
private void sendMsg(){
    EMMessage msg = EMMessage.createTxtSendMessage("lalalala","你的用户名");
    EMClient.getInstance().chatManager().sendMessage(msg);
}

EMMessageListener msgListener = new EMMessageListener() {

    @Override
    public void onMessageReceived(List<EMMessage> messages) {
        //收到消息
        if (messages.size() > 0){
            EMMessage msg = messages.get(0);
            EMTextMessageBody body = (EMTextMessageBody) msg.getBody();
            tv.setText("收到的消息"+
                    body.getMessage());
            Toast.makeText(MainActivity.this,"收到的消息"+
                    body.getMessage(),Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onCmdMessageReceived(List<EMMessage> messages) {
        //收到透传消息
    }

    @Override
    public void onMessageRead(List<EMMessage> messages) {
        //收到已读回执
    }

    @Override
    public void onMessageDelivered(List<EMMessage> message) {
        //收到已送达回执
    }
    @Override
    public void onMessageRecalled(List<EMMessage> messages) {
        //消息被撤回
    }

    @Override
    public void onMessageChanged(EMMessage message, Object change) {
        //消息状态变动
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值