先写清单文件
<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) {
//消息状态变动
}
};
本文档详细介绍了如何在Android应用中集成环信即时通讯SDK,包括配置清单文件、创建EMOptions实例、监听消息接收及发送等关键步骤,帮助开发者快速实现聊天功能。

2253

被折叠的 条评论
为什么被折叠?



