交互逻辑
- 点击交流功能 -> 进入环信 Demo 的通信录页面?会话列表页面?感觉会话列表页面更合理一点
- 从 Weex 通信录点击发送信息 -> 进入环信 Demo 的具体某个联系人的实时聊天页面
实际上就是在 Weex 中需要跳转到 demo 里的具体某个 activity。
最麻烦的逻辑在于如何从环信 UI 跳回到 Weex 的页面。
Android Activity 间的切换
实现参考 Start Another Activity | Android Developers
Android 官方的 Getting Started 是最好的入门文档。
首先,下载个 demo 看看环信是如何实现 activity 间切换的。
demo 中有两个重要的 activity
- MainActivity: 包含了三个 tab, 默认为会话列表页面 tab
- ChatActivity: 会话页面
使用 EaseUI 集成还是使用 Demo 的代码
从资料来看,直接集成 EaseUI 就可以。
gradle 依赖冲突
Error:Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (24.2.1) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
解决方法,在 app 的 gradle build 中加入
androidTestCompile 'com.android.support:support-annotations:24.2.1'
目的是显式地声明我要使用指定版本的依赖。
参考: Resolving Conflicts in android gradle dependencies – Mindorks
调用环信的 EaseUI 界面
简单的测试方法就是,默认加载 EaseUI 的 chat activity
package com.alibaba.weex;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import com.hyphenate.EMCallBack;
import com.hyphenate.easeui.EaseConstant;
//import com.hyphenate.easeui.ui.EaseConversationList;
import com.hyphenate.easeui.ui.EaseChatFragment;
import com.hyphenate.chat.EMClient;
public class ConversationActivity extends FragmentActivity {
//protected EaseConversationList conversationListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_conversation);
EMClient.getInstance().login("test1", "123456", new EMCallBack() {//回调
@Override
public void onSuccess() {
EMClient.getInstance().groupManager().loadAllGroups();
EMClient.getInstance().chatManager().loadAllConversations();
Log.d("main", "登录聊天服务器成功!");
}
@Override
public void onProgress(int progress, String status) {
}
@Override
public void onError(int code, String message) {
Log.d("main", "登录聊天服务器失败!");
}
});
Intent intent = getIntent();
String targetUserId = intent.getStringExtra(EaseConstant.EXTRA_USER_ID);
//new出EaseChatFragment或其子类的实例
EaseChatFragment chatFragment = new EaseChatFragment();
//传入参数
Bundle args = new Bundle();
// 默认为单聊
// args.putInt(EaseConstant.EXTRA_CHAT_TYPE, EaseConstant.CHATTYPE_GROUP);
args.putString(EaseConstant.EXTRA_USER_ID, targetUserId);
chatFragment.setArguments(args);
getSupportFragmentManager().beginTransaction().add(R.id.container, chatFragment).commit();
}
}
报错
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.test.runner.jar" ...
couldn't find "libhyphenate.so"
需要在 app 的 build.gradle 里引入
compile 'com.hyphenate:hyphenate-sdk:3.3.0'
原因是,之前只是引入了 easeui,但是没有引入聊天的 sdk。
No view found for id 0x7f0e0086 (com.sunzhongwei.test:id/container) for fragment EaseChatFragment{e1af943 #0 id=0x7f0e0086}
从代码来看
getSupportFragmentManager().beginTransaction().add(R.id.container, chatFragment).commit();
布局里需要有container这个id的控件
android:id="@+id/container"
在 layout 的 xml 文件中加入这行就 OK 了。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式