package cn.rongcloud.demo_imlib_basic_android; import android.app.ActivityManager; import android.app.Application; import android.content.Context; import cn.rongcloud.demo_imlib_basic_android.message.CustomizeMessage; import io.rong.imlib.AnnotationNotFoundException; import io.rong.imlib.RongIMClient; import io.rong.message.FileMessage; /** * Created by Beyond on 16/10/2016. */ public class App extends Application { /** * 由"开发者平台"提供的 App Key, */ private static final String APP_KEY = "82hegw5uh8ijx"; @Override public void onCreate() { super.onCreate(); /** * OnCreate 会被多个进程重入,这段保护代码,确保只有您需要使用 RongIMClient 的进程和 Push 进程执行了 init。 * io.rong.push 为融云 push 进程名称,不可修改。 */ if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext())) || "io.rong.push".equals(getCurProcessName(getApplicationContext()))) { RongIMClient.init(this, APP_KEY); } /** * 用于自定义消息的注册, 注册后方能正确识别自定义消息, 建议在init后及时注册,保证自定义消息到达时能正确解析。 */ try { RongIMClient.registerMessageType(FileMessage.class); RongIMClient.registerMessageType(CustomizeMessage.class); } catch (AnnotationNotFoundException e) { e.printStackTrace(); } AppContext.getInstance().init(getApplicationContext()); AppContext.getInstance().registerReceiveMessageListener(); } public static String getCurProcessName(Context context) { int pid = android.os.Process.myPid(); ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) { if (appProcess.pid == pid) return appProcess.processName; } return null; } }