EaseChat icon indicating copy to clipboard operation
EaseChat copied to clipboard

没有easeu这个裤啊。哎,好坑,弄好长时间

Open yaozhengzheng opened this issue 7 years ago • 3 comments

yaozhengzheng avatar Aug 13 '18 14:08 yaozhengzheng

这个只是用的 sdk 直接开发集成的,并没有用到 easeui

lzan13 avatar Aug 14 '18 06:08 lzan13

import android.app.ActivityManager; import android.app.Application; import android.content.Context; import android.content.pm.PackageManager;

import com.hyphenate.chat.EMClient; import com.hyphenate.chat.EMOptions;

import java.util.Iterator; import java.util.List;

/**

  • Created by lz on 2016/4/16.

  • 项目的 Application类,做一些项目的初始化操作,比如sdk的初始化等 */ public class ECApplication extends Application {

    // 上下文菜单 private Context mContext;

    // 记录是否已经初始化 private boolean isInit = false;

    @Override public void onCreate() { super.onCreate(); mContext = this;

     // 初始化环信SDK
     initEasemob();
    

    }

    /** * / private void initEasemob() { // 获取当前进程 id 并取得进程名 int pid = android.os.Process.myPid(); String processAppName = getAppName(pid); /* * 如果app启用了远程的service,此application:onCreate会被调用2次 * 为了防止环信SDK被初始化2次,加此判断会保证SDK被初始化1次 * 默认的app会在以包名为默认的process name下运行,如果查到的process name不是app的process name就立即返回 */ if (processAppName == null || !processAppName.equalsIgnoreCase(mContext.getPackageName())) { // 则此application的onCreate 是被service 调用的,直接返回 return; } if (isInit) { return; }

     // 调用初始化方法初始化sdk
     EMClient.getInstance().init(mContext, initOptions());
     // 设置开启debug模式
     EMClient.getInstance().setDebugMode(true);
    
     // 设置初始化已经完成
     isInit = true;
    

    }

    /**

    • SDK初始化的一些配置

    • 关于 EMOptions 可以参考官方的 API 文档

    • http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1chat_1_1_e_m_options.html */ private EMOptions initOptions() {

      EMOptions options = new EMOptions(); // 设置Appkey,如果配置文件已经配置,这里可以不用设置 // options.setAppKey("lzan13#hxsdkdemo"); // 设置自动登录 options.setAutoLogin(true); // 设置是否需要发送已读回执 options.setRequireAck(true); // 设置是否需要发送回执, options.setRequireDeliveryAck(true); // 设置是否根据服务器时间排序,默认是true options.setSortMessageByServerTime(false); // 收到好友申请是否自动同意,如果是自动同意就不会收到好友请求的回调,因为sdk会自动处理,默认为true options.setAcceptInvitationAlways(false); // 设置是否自动接收加群邀请,如果设置了当收到群邀请会自动同意加入 options.setAutoAcceptGroupInvitation(false); // 设置(主动或被动)退出群组时,是否删除群聊聊天记录 options.setDeleteMessagesAsExitGroup(false); // 设置是否允许聊天室的Owner 离开并删除聊天室的会话 options.allowChatroomOwnerLeave(true); // 设置google GCM推送id,国内可以不用设置 // options.setGCMNumber(MLConstants.ML_GCM_NUMBER); // 设置集成小米推送的appid和appkey // options.setMipushConfig(MLConstants.ML_MI_APP_ID, MLConstants.ML_MI_APP_KEY);

      return options; }

    /**

    • 根据Pid获取当前进程的名字,一般就是当前app的包名
    • @param pid 进程的id
    • @return 返回进程的名字 */ private String getAppName(int pid) { String processName = null; ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); List list = activityManager.getRunningAppProcesses(); Iterator i = list.iterator(); while (i.hasNext()) { ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next()); try { if (info.pid == pid) { // 根据进程的信息获取当前进程的名字 processName = info.processName; // 返回当前进程名 return processName; } } catch (Exception e) { e.printStackTrace(); } } // 没有匹配的项,返回为null return null; } }

编译报错

aclemon avatar Sep 23 '18 13:09 aclemon

image

aclemon avatar Sep 23 '18 13:09 aclemon