您的位置:首页 > 产品设计 > UI/UE

android导入环信,使用环信UI的API的方法

2016-12-15 13:34 363 查看

官网帮助文档:http://docs.easemob.com/im/200androidclientintegration/135easeuiuseguide

下载sdk,前面介绍使用无UI的API中有下载的地址,

解压,打开解压好的文件 ,选择examples,打开 ,删掉里面的simpledemo文件 ,这是里面自带的一些案例没什么用,不需要

如果用android Studio导的话就先建个lib,里面的包名需要和下面一条中的包名一样

打开里面的easeui文件夹,里面有src,里面的java类,需要我们建立一样的包,com.example.emtest,把里面的文件都拷贝到我们的同一个包下,然后报res文件,拷贝到我们的res目录下,里面的lib文件拷贝到我们的lib里

然后我们需要导入依赖包,前面介绍使用无UI的API中有介绍,不需要配置的就是manifest

然后将这个lib依赖到需要用的工程中就可以了

下面是一个案例







MyApp 类初始化

public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
EMOptions options = new EMOptions();
EaseUI.getInstance().init(this,options);
}
}


MainActivity 登录注册

public class MainActivity extends AppCompatActivity {

EditText et_username, et_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_username = (EditText) findViewById(R.id.et_username);
et_password = (EditText) findViewById(R.id.et_password);
}

public void login(View v) {
final String username = et_username.getText().toString();
final String password = et_password.getText().toString();
EMClient.getInstance().login(username, password, new EMCallBack() {
@Override
public void onSuccess() {
startActivity(new Intent(getBaseContext(), ContactActivity.class).putExtra("username", username));
EMClient.getInstance().chatManager().loadAllConversations();//会话
EMClient.getInstance().groupManager().loadAllGroups();//群组
}

@Override
public void onError(int i, String s) {

}

@Override
public void onProgress(int i, String s) {

}
});
}

public void register(View v) {
final String username = et_username.getText().toString();
final String password = et_password.getText().toString();
new Thread() {
@Override
public void run() {
try {
EMClient.getInstance().createAccount(username, password);
} catch (HyphenateException e) {
e.printStackTrace();
}
}
}.start();
}
}


ContactActivity 简单的一些聊天

public class ContactActivity  extends AppCompatActivity implements EaseContactListFragment.EaseContactListItemClickListener {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
//getActionBar().hide();与上一句一样 去掉bar
String username = getIntent().getStringExtra("username");
setTitle(username);
setContentView(R.layout.activity_contact);
initFragment();
}
List<String> usernames = new ArrayList<>();
private void initFragment() {

//没有好友列表 第一需要拿到好友列表

new Thread(){
@Override
public void run() {
super.run();
try {
//拿到好友列表
List<String> list= EMClient.getInstance().contactManager().getAllContactsFromServer();
if (list!=null)
usernames.addAll(list);
handler.sendEmptyMessage(1);
} catch (HyphenateException e) {
e.printStackTrace();
}
Log.e("TAG", usernames.toString());
}
}.start();

}

Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
//EaseContactListFragment – 联系人页面
EaseContactListFragment fragment = new EaseContactListFragment();
//        Bundle bundle= new Bundle();
//        fragment.setArguments(bundle);

//需要设置联系人列表才能启动fragment
Map<String, EaseUser> map = new HashMap<>();
//EaseUser中有username的排序,只有一个user  如果全部是组,会被替换掉

for (int i = 0; i <usernames.size() ; i++) {
EaseUser user = new EaseUser(usernames.get(i));
//user可以做许多事,设置头像,昵称等

user.setNickname("张三");
user.setAvatar("https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png");
//这样设置还是不行的 需要到环信的内部代码中去改,环信只能保存username和password
//怎么设 ?EaseContactListFragment直接点进去
map.put(i + "", user);//谁便给一个key
}
fragment.setContactsMap(map);//设置联系人
//设置item点击事件
fragment.setContactListItemClickListener(ContactActivity.this);//

//最后替换它,用 FragmentTransaction
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fl_content,fragment);
ft.commit();
break;
}
}
};

@Override
public void onListItemClicked(EaseUser user) {
//得到点击的是哪一个
//EaseChatFragment – 聊天页面,最主要的 fragment
EaseChatFragment fragment = new EaseChatFragment();
Bundle bundle = new Bundle();
bundle.putInt(EaseConstant.EXTRA_CHAT_TYPE,EaseConstant.CHATTYPE_SINGLE);//聊天类型
bundle.putString(EaseConstant.EXTRA_USER_ID,user.getUsername());//和谁聊天
fragment.setArguments(bundle);

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fl_content,fragment);
ft.commit();
}

@Override//档案返回键的时候让他退回来
public void onBackPressed() {
super.onBackPressed();
initFragment();//上面的如果用add会出现多个
}
}


这里需要设置manifest,和环信自己的activity和权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.emtest">

<!-- Required -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:name=".MyApp"
android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".ContactActivity"/>

<!-- 环信自己的activity     -->
<activity android:name="com.hyphenate.easeui.ui.EaseBaiduMapActivity" />
<activity android:name="com.hyphenate.easeui.ui.EaseShowBigImageActivity" />
<activity android:name="com.hyphenate.easeui.ui.EaseShowNormalFileActivity" />
<activity android:name="com.hyphenate.easeui.ui.EaseShowVideoActivity" />

<!-- 设置环信应用的AppKey -->
<meta-data android:name="EASEMOB_APPKEY"  android:value="huary#demo" />
<!-- 声明SDK所需的service SDK核心功能-->
<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>
</application>

</manifest>


环信只能保存username和password如果需要改用户的昵称和图像需要到环信里面去改

下面是一些技巧

1.改改用户的昵称和图像,EaseContactListFragment直接点进去



2.通过ListView去找adapter



3.找到adapter



4.通过adapter找到条目



5.在getview中找到设置的地方



6.找到这两个id和设置的地方



7.进行修改

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android api java sdk ui