差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
start:200androidcleintintegration:30androidsdkbasics [2016/08/24 03:39] liulij |
start:200androidcleintintegration:30androidsdkbasics [2018/09/05 09:54] 127.0.0.1 外部编辑 |
||
---|---|---|---|
行 16: | 行 16: | ||
要求在 application 的 oncreate 方法中做初始化。 | 要求在 application 的 oncreate 方法中做初始化。 | ||
- | <sxh java> | + | <code java> |
EMChat.getInstance().init(applicationContext); | EMChat.getInstance().init(applicationContext); | ||
行 25: | 行 25: | ||
*/ | */ | ||
EMChat.getInstance().setDebugMode(true);//在做打包混淆时,要关闭debug模式,避免消耗不必要的资源 | EMChat.getInstance().setDebugMode(true);//在做打包混淆时,要关闭debug模式,避免消耗不必要的资源 | ||
- | </sxh> | + | </code> |
注:如果你的 APP 中有第三方的服务启动,请在初始化 SDK(''EMChat.getInstance().init(applicationContext)'')方法的前面添加以下相关代码(相应代码也可参考 Demo 的 application)。 | 注:如果你的 APP 中有第三方的服务启动,请在初始化 SDK(''EMChat.getInstance().init(applicationContext)'')方法的前面添加以下相关代码(相应代码也可参考 Demo 的 application)。 | ||
- | <sxh java> | + | <code java> |
appContext = this; | appContext = this; | ||
int pid = android.os.Process.myPid(); | int pid = android.os.Process.myPid(); | ||
行 45: | 行 45: | ||
return; | return; | ||
} | } | ||
- | </sxh> | + | </code> |
如何获取 processAppName 请参考以下方法。 | 如何获取 processAppName 请参考以下方法。 | ||
- | <sxh java> | + | <code java> |
private String getAppName(int pID) { | private String getAppName(int pID) { | ||
String processName = null; | String processName = null; | ||
行 74: | 行 74: | ||
return processName; | return processName; | ||
} | } | ||
- | </sxh> | + | </code> |
行 87: | 行 87: | ||
- | <sxh java> | + | <code java> |
new Thread(new Runnable() { | new Thread(new Runnable() { | ||
public void run() { | public void run() { | ||
行 107: | 行 107: | ||
} | } | ||
}).start(); | }).start(); | ||
- | </sxh> | + | </code> |
===== 登录 ===== | ===== 登录 ===== | ||
行 120: | 行 120: | ||
另外如果登录过,APP 长期在后台再进的时候也可能会导致加载到内存的群组和会话为空,可以在主页面的 oncreate 里也加上这两句代码,当然,更好的办法应该是放在程序的开屏页,可参考 Demo 的 SplashActivity。 | 另外如果登录过,APP 长期在后台再进的时候也可能会导致加载到内存的群组和会话为空,可以在主页面的 oncreate 里也加上这两句代码,当然,更好的办法应该是放在程序的开屏页,可参考 Demo 的 SplashActivity。 | ||
- | <sxh java> | + | <code java> |
EMChatManager.getInstance().login(userName,password,new EMCallBack() {//回调 | EMChatManager.getInstance().login(userName,password,new EMCallBack() {//回调 | ||
@Override | @Override | ||
行 143: | 行 143: | ||
} | } | ||
}); | }); | ||
- | </sxh> | + | </code> |
行 164: | 行 164: | ||
当掉线时,Android SDK 会自动重连,无需进行任何操作。 | 当掉线时,Android SDK 会自动重连,无需进行任何操作。 | ||
- | <sxh java> | + | <code java> |
//注册一个监听连接状态的listener | //注册一个监听连接状态的listener | ||
EMChatManager.getInstance().addConnectionListener(new MyConnectionListener()); | EMChatManager.getInstance().addConnectionListener(new MyConnectionListener()); | ||
行 194: | 行 194: | ||
} | } | ||
} | } | ||
- | </sxh> | + | </code> |
===== 退出聊天登录 ===== | ===== 退出聊天登录 ===== | ||
- | <sxh java> | + | <code java> |
- | EMChatManager.getInstance().logout();//此方法为同步方法 | + | //此方法为同步方法 |
- | </sxh> | + | EMChatManager.getInstance().logout(); |
+ | </code> | ||
- | <sxh java> | + | <code java> |
//此方法为异步方法 | //此方法为异步方法 | ||
EMChatManager.getInstance().logout(new EMCallBack() { | EMChatManager.getInstance().logout(new EMCallBack() { | ||
行 225: | 行 226: | ||
} | } | ||
}); | }); | ||
- | </sxh> | + | </code> |
===== 注册监听 ===== | ===== 注册监听 ===== | ||
行 233: | 行 234: | ||
==== 注册接收新消息的监听广播 ==== | ==== 注册接收新消息的监听广播 ==== | ||
- | <sxh java> | + | <code java> |
//只有注册了广播才能接收到新消息,目前离线消息,在线消息都是走接收消息的广播(离线消息目前无法监听,在登录以后,接收消息广播会执行一次拿到所有的离线消息) | //只有注册了广播才能接收到新消息,目前离线消息,在线消息都是走接收消息的广播(离线消息目前无法监听,在登录以后,接收消息广播会执行一次拿到所有的离线消息) | ||
NewMessageBroadcastReceiver msgReceiver = new NewMessageBroadcastReceiver(); | NewMessageBroadcastReceiver msgReceiver = new NewMessageBroadcastReceiver(); | ||
行 263: | 行 264: | ||
} | } | ||
} | } | ||
- | </sxh> | + | </code> |
==== 注册接收 ack 回执消息的 BroadcastReceiver ==== | ==== 注册接收 ack 回执消息的 BroadcastReceiver ==== | ||
- | <sxh java> | + | <code java> |
EMChatManager.getInstance().getChatOptions().setRequireAck(flag) | EMChatManager.getInstance().getChatOptions().setRequireAck(flag) | ||
//如果用到已读的回执需要把这个flag设置成true | //如果用到已读的回执需要把这个flag设置成true | ||
行 293: | 行 294: | ||
} | } | ||
}; | }; | ||
- | </sxh> | + | </code> |
==== 注册一个消息送达的 BroadcastReceiver(在聊天界面注册) ==== | ==== 注册一个消息送达的 BroadcastReceiver(在聊天界面注册) ==== | ||
- | <sxh java> | + | <code java> |
EMChatManager.getInstance().getChatOptions().setRequireDeliveryAck(flag) | EMChatManager.getInstance().getChatOptions().setRequireDeliveryAck(flag) | ||
//如果用到已发送的回执需要把这个flag设置成true | //如果用到已发送的回执需要把这个flag设置成true | ||
行 326: | 行 327: | ||
} | } | ||
}; | }; | ||
- | </sxh> | + | </code> |
==== 监听联系人的变化等 ==== | ==== 监听联系人的变化等 ==== | ||
- | <sxh java> | + | <code java> |
EMContactManager.getInstance().setContactListener(new MyContactListener()); | EMContactManager.getInstance().setContactListener(new MyContactListener()); | ||
行 365: | 行 366: | ||
} | } | ||
- | </sxh> | + | </code> |
==== 注册一个监听连接状态的 listener ==== | ==== 注册一个监听连接状态的 listener ==== | ||
行 373: | 行 374: | ||
- | <sxh java> | + | <code java> |
//注册一个监听连接状态的listener | //注册一个监听连接状态的listener | ||
EMChatManager.getInstance().addConnectionListener(new MyConnectionListener()); | EMChatManager.getInstance().addConnectionListener(new MyConnectionListener()); | ||
行 402: | 行 403: | ||
} | } | ||
} | } | ||
- | </sxh> | + | </code> |
==== 注册群聊相关的 listener ==== | ==== 注册群聊相关的 listener ==== | ||
- | <sxh java> | + | <code java> |
EMGroupManager.getInstance().addGroupChangeListener(new MyGroupChangeListener()); | EMGroupManager.getInstance().addGroupChangeListener(new MyGroupChangeListener()); | ||
行 492: | 行 493: | ||
} | } | ||
- | </sxh> | + | </code> |
注:最后要通知 SDK,UI 已经初始化完毕,注册了相应的 receiver 和 listener,可以接受 broadcast 了。 | 注:最后要通知 SDK,UI 已经初始化完毕,注册了相应的 receiver 和 listener,可以接受 broadcast 了。 | ||
- | <sxh java>EMChat.getInstance().setAppInited();</sxh> | + | <code java>EMChat.getInstance().setAppInited();</code> |
==== 回调监听事件注册 ==== | ==== 回调监听事件注册 ==== | ||
- | <sxh java>EMChatManager.getInstance().registerEventListener(new EMEventListener() { | + | <code java> |
+ | EMChatManager.getInstance().registerEventListener(new EMEventListener() { | ||
@Override | @Override | ||
行 542: | 行 544: | ||
} | } | ||
} | } | ||
- | });</sxh> | + | }); |
+ | </code> | ||
<html><font color="red" size="+1">注:以上两种方式都可以执行相同的操作,但是广播和监听事件不可同时混用。</font></html> | <html><font color="red" size="+1">注:以上两种方式都可以执行相同的操作,但是广播和监听事件不可同时混用。</font></html> | ||
行 557: | 行 560: | ||
</WRAP> | </WRAP> | ||
</WRAP> | </WRAP> | ||
- |