1:导入imkits包,这里面包括imkit和imlibs两个moudle,导入
2:修改imlib清单中的appkey;
<meta-data
android:name="RONG_CLOUD_APP_KEY"
android:value="******" />
3:imkit下清单中需要注册provide
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="包名.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/rc_file_path" />
</provider>
<paths>
<external-path name="rc_external_path" path="."/>
</paths>
4:项目中只简单的使用聊天室,所以只需要使用conversation详情界面;
首先项目中创建新的ConversationActivity,布局文件中只需要直接使用fragment;
<fragment
android:id="@+id/conversation"
android:name="io.rong.imkit.fragment.ConversationFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
title等可自己定义;
清单中需要修改conversationActivity的属性
<activity
android:name=".ConversationActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="包名"
android:pathPrefix="/conversation/"
android:scheme="rong" />
</intent-filter>
</activity>
5:初始化application中
RongIM.init(this);
RongIM.setOnReceiveMessageListener(new ReceiveMessageListener());
public class ReceiveMessageListener implements RongIMClient.OnReceiveMessageListener {
@Override
public boolean onReceived(Message message, int i) {
return false;
}
}
6:链接融云服务器需要参数token(后台返回)
RongIM.connect(token, new RongIMClient.ConnectCallback() {
/**
* Token 错误。可以从下面两点检查 1. Token 是否过期,如果过期您需要向 App Server 重新请求一个新的 Token
* 2. token 对应的 appKey 和工程里设置的 appKey 是否一致
*/
@Override
public void onTokenIncorrect() {
Log.d("MainActivity", "--onTokenIncorrect" );
}
/**
* 连接融云成功
* @param userid 当前 token 对应的用户 id
*/
@Override
public void onSuccess(String userid) {
Log.d("MainActivity", "--onSuccess" + userid);
}
/**
* 连接融云失败
* @param errorCode 错误码,可到官网 查看错误码对应的注释
*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Toast.makeText(MainActivity.this,"error"+errorCode,Toast.LENGTH_LONG).show();
}
});
7:
RongIM.getInstance().joinExistChatRoom(roomId, 20, new RongIMClient.OperationCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Toast.makeText(MainActivity.this,"error"+errorCode,Toast.LENGTH_LONG).show();
}
});
加入已存在的聊天室,第一个参数roomid,第二个加载聊天记录条数
跳转聊天界面:
RongIM.getInstance().startConversation(getActivity(), Conversation.ConversationType.CHATROOM, roomid, title);
8:修改聊天记录item的布局:
imkit下找到rc_item_conversation.xml
如圆形图片修改头像为
app:RCShape="square"
9:
TargetSdkVersion 为24时,找不到libsqlite.so,导致连上无法连接服务器。
解决办法:降低sdkversion或者下载对应的libsqlite.so
下载地址libsqlite.so