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中怎么导入环信,这里讲无UI的API的使用方法
- APIDemo学习笔记——Android上几种简单的Animation使用方法(三)——3D Transition
- 使用android隐藏api实现亮度调节的方法
- android使用隐藏api的方法(使用被@hide的api)
- android v7包 正常导入使用方法
- Android Canvas API总结和使用方法
- android使用隐藏api的方法@hide
- <为知更新>windows下使用android隐藏api的方法
- 在android中,编译的项目使用到第三方jar的导入方法 终极版!
- android以欺骗的方法使用隐藏API调用举例(国际化,多语言)
- android使用隐藏api的方法(使用被@hide的api)!!!!!!!
- Android百度定位API使用方法
- Android百度定位API使用方法
- android使用隐藏api的方法(使用被@hide的api)
- Android未开公API的使用方法
- Android 百度定位API使用方法
- Android未开公API的使用方法
- Android Bitmap Api总结和使用方法
- APIDemo学习笔记——Android上几种简单的Animation使用方法(二)
- 【Android Studio使用教程1】Android Studio导入项目的几种方法