第一次提交
This commit is contained in:
430
app/src/main/java/com/hbl/yuliao/IMApplication.java
Normal file
430
app/src/main/java/com/hbl/yuliao/IMApplication.java
Normal file
@@ -0,0 +1,430 @@
|
||||
// Copyright (c) 2022 NetEase, Inc. All rights reserved.
|
||||
// Use of this source code is governed by a MIT license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
package com.hbl.yuliao;
|
||||
|
||||
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.PATH_FUN_TEAM_SETTING_PAGE;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.Log;
|
||||
|
||||
import com.hbl.yuliao.imkit.team.TeamAnnouncementActivity;
|
||||
import com.hbl.yuliao.map.LocationPageActivity1;
|
||||
import com.hbl.yuliao.utils.GsonUtils;
|
||||
import com.heytap.msp.push.HeytapPushManager;
|
||||
import com.netease.yunxin.kit.chatkit.model.IMMessageInfo;
|
||||
import com.netease.yunxin.kit.chatkit.repo.ChatObserverRepo;
|
||||
import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant;
|
||||
import com.netease.yunxin.kit.chatkit.ui.common.ChatDataUtils;
|
||||
import com.netease.yunxin.kit.chatkit.ui.common.ChatUtils;
|
||||
import com.netease.yunxin.kit.chatkit.ui.page.LocationPageActivity;
|
||||
import com.netease.yunxin.kit.conversationkit.ui.fun.viewholder.EmojiManager;
|
||||
import com.netease.yunxin.kit.corekit.im.model.EventObserver;
|
||||
import com.scwang.smart.refresh.footer.ClassicsFooter;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.multidex.MultiDexApplication;
|
||||
|
||||
import com.blankj.utilcode.util.LanguageUtils;
|
||||
import com.hbl.yuliao.contact.ContactGroupSettingActivity;
|
||||
import com.hbl.yuliao.contact.FunBlackListActivity;
|
||||
import com.hbl.yuliao.imkit.person.PersonSettingActivity;
|
||||
import com.hbl.yuliao.imkit.selector.FunContactSelectorActivity;
|
||||
import com.hbl.yuliao.imkit.team.TeamSettingActivity;
|
||||
import com.hbl.yuliao.main.MainActivity;
|
||||
import com.hbl.yuliao.main.mine.MineInfoActivity;
|
||||
import com.hbl.yuliao.contact.UserInfoActivity;
|
||||
import com.hbl.yuliao.model.AlbumBean;
|
||||
import com.hbl.yuliao.network.Api;
|
||||
import com.hbl.yuliao.network.BaseObserver;
|
||||
import com.hbl.yuliao.network.Result;
|
||||
import com.hbl.yuliao.push.PushMessageHandler;
|
||||
import com.hbl.yuliao.utils.Constant;
|
||||
import com.hbl.yuliao.utils.DataUtils;
|
||||
import com.hbl.yuliao.utils.LogUtils;
|
||||
import com.hbl.yuliao.voom.TiktoInfokActivity;
|
||||
import com.hbl.yuliao.welcome.WelcomeActivity;
|
||||
|
||||
import com.netease.nimlib.sdk.SDKOptions;
|
||||
import com.netease.nimlib.sdk.auth.LoginInfo;
|
||||
import com.netease.yunxin.kit.alog.ALog;
|
||||
import com.netease.yunxin.kit.chatkit.ui.common.RxBus;
|
||||
import com.netease.yunxin.kit.chatkit.ui.custom.StickerAttachment;
|
||||
import com.netease.yunxin.kit.chatkit.ui.fun.page.FunChatSettingActivity;
|
||||
import com.netease.yunxin.kit.chatkit.ui.model.RxBusToVoom;
|
||||
import com.netease.yunxin.kit.common.ui.utils.ToastX;
|
||||
import com.netease.yunxin.kit.contactkit.ui.ContactConstant;
|
||||
import com.netease.yunxin.kit.corekit.im.IMKitClient;
|
||||
import com.netease.yunxin.kit.corekit.im.repo.SettingRepo;
|
||||
import com.netease.yunxin.kit.corekit.im.utils.IMKitUtils;
|
||||
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
|
||||
import com.netease.yunxin.kit.corekit.route.XKitRouter;
|
||||
//import com.netease.yunxin.kit.locationkit.LocationKitClient;
|
||||
import com.tencent.bugly.crashreport.CrashReport;
|
||||
import com.vivo.push.PushClient;
|
||||
import com.vivo.push.util.VivoPushException;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
//import cn.jiguang.api.JCoreInterface;
|
||||
//import cn.jiguang.api.utils.JCollectionAuth;
|
||||
//import cn.jpush.android.api.JPushInterface;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
public class IMApplication extends MultiDexApplication {
|
||||
private static final String TAG = "IMApplication";
|
||||
private static boolean coldStart = false;
|
||||
private static int foregroundActCount = 0;
|
||||
public static final int LOGIN_PARENT_SCOPE = 2;
|
||||
public static final int LOGIN_SCOPE = 7;
|
||||
public static IMApplication AppContext;
|
||||
// public LLM llm;
|
||||
public static String schemeUserId = null;
|
||||
public static String schemeTeamId = null;
|
||||
public static String schemeSilverQrCode = null;
|
||||
public static String fcmpayload = "";
|
||||
public static IMApplication getInstance() {
|
||||
return AppContext;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
ALog.d(Constant.PROJECT_TAG, TAG, "onCreate");
|
||||
//app init
|
||||
registerActivityLifeCycle();
|
||||
// AppCrashHandler.getInstance().initCrashHandler(this);
|
||||
// Thread.setDefaultUncaughtExceptionHandler(AppCrashHandler.getInstance());
|
||||
AppContext = this;
|
||||
initUIKit();
|
||||
// temp register for mine
|
||||
registerRouter();
|
||||
CrashReport.initCrashReport(getApplicationContext(), "29ecb7c2d2", true);
|
||||
initLang();
|
||||
initAiSDK();
|
||||
// JPushInterface.setDebugMode(BuildConfig.DEBUG);
|
||||
// JPushInterface.init(this);
|
||||
// JCoreInterface.testCountryCode(this, "us");
|
||||
// String id = JPushInterface.getRegistrationID(this);
|
||||
// LogUtils.d("id===" + id);
|
||||
// JCollectionAuth.setAuth(this, true); //如初始化被拦截过,将重试初始化过程
|
||||
RxBus.getInstance().toObservable(RxBusToVoom.class)
|
||||
.subscribeOn(rx.schedulers.Schedulers.io())
|
||||
.unsubscribeOn(rx.schedulers.Schedulers.io())
|
||||
.subscribe(changeImageViewBean -> {//回顶部
|
||||
getPostInfo(changeImageViewBean);
|
||||
});
|
||||
|
||||
initFooter();
|
||||
EmojiManager.init(this);
|
||||
}
|
||||
|
||||
public void initFooter() {
|
||||
ClassicsFooter.REFRESH_FOOTER_PULLING = getResources().getString(R.string.srl_footer_pulling);//"上拉加载更多";
|
||||
ClassicsFooter.REFRESH_FOOTER_RELEASE = getResources().getString(R.string.srl_footer_release);//"释放立即加载";
|
||||
ClassicsFooter.REFRESH_FOOTER_LOADING = getResources().getString(R.string.srl_footer_loading);//"正在刷新...";
|
||||
ClassicsFooter.REFRESH_FOOTER_REFRESHING = getResources().getString(R.string.srl_footer_refreshing);//"正在加载...";
|
||||
ClassicsFooter.REFRESH_FOOTER_FINISH = getResources().getString(R.string.srl_footer_finish);//"加载完成";
|
||||
ClassicsFooter.REFRESH_FOOTER_FAILED = getResources().getString(R.string.srl_footer_failed);//"加载失败";
|
||||
ClassicsFooter.REFRESH_FOOTER_NOTHING = getResources().getString(R.string.srl_footer_nothing);//"全部加载完成";
|
||||
}
|
||||
|
||||
|
||||
private void getPostInfo(RxBusToVoom attachment) {
|
||||
Api.getInstance().postsInfo(attachment.getPostId())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new BaseObserver<Result<AlbumBean>>() {
|
||||
@Override
|
||||
public void onSuccess(Result<AlbumBean> feedbackResp) {
|
||||
AlbumBean albumBean = feedbackResp.data;
|
||||
Intent intent = new Intent(getAppContext(), TiktoInfokActivity.class);
|
||||
intent.putExtra("bean", albumBean);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
getAppContext().startActivity(intent);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(int code, String msg) {
|
||||
ToastX.showShortToast(msg);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void registerRouter() {
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_MINE_INFO_PAGE, MineInfoActivity.class);
|
||||
XKitRouter.registerRouter(
|
||||
RouterConstant.PATH_CONTACT_SELECTOR_PAGE, FunContactSelectorActivity.class);
|
||||
XKitRouter.registerRouter(
|
||||
RouterConstant.PATH_FUN_CONTACT_SELECTOR_PAGE, FunContactSelectorActivity.class);
|
||||
// XKitRouter.registerRouter(RouterConstant.PATH_ADD_FRIEND_PAGE, FunAddFriendActivity.class);
|
||||
// XKitRouter.registerRouter(RouterConstant.PATH_FUN_ADD_FRIEND_PAGE, FunAddFriendActivity.class);
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_FUN_USER_INFO_PAGE, UserInfoActivity.class);
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_USER_INFO_PAGE, UserInfoActivity.class);
|
||||
XKitRouter.registerRouter(ContactConstant.PATH_FUN_CREATE_GROUP_PAGE, ContactGroupSettingActivity.class);
|
||||
// XKitRouter.registerRouter(PATH_FUN_TEAM_SETTING_PAGE, FunTeamSettingActivity.class);
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_FUN_TEAM_SETTING_PAGE, TeamSettingActivity.class);
|
||||
XKitRouter.registerRouter(ChatKitUIConstant.PATH_FUN_TEAM_ANNOUNCEMENT_PAGE, TeamAnnouncementActivity.class);
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_FUN_CHAT_SETTING_PAGE, PersonSettingActivity.class);
|
||||
// XKitRouter.registerRouter(RouterConstant.PATH_CHAT_SETTING_PAGE, FunChatSettingActivity.class);
|
||||
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_FUN_MY_BLACK_PAGE, FunBlackListActivity.class);
|
||||
XKitRouter.registerRouter(RouterConstant.PATH_CHAT_LOCATION_PAGE, LocationPageActivity1.class);
|
||||
XKitRouter.registerRouter("locationPage", LocationPageActivity.class);
|
||||
|
||||
}
|
||||
|
||||
public void initAiSDK() {
|
||||
// 初始化SDK,Appid等信息在清单中配置
|
||||
// SparkChainConfig sparkChainConfig = SparkChainConfig.builder();
|
||||
// sparkChainConfig.appID(IMUIKitConfig.AI_APPID)
|
||||
// .apiKey(IMUIKitConfig.AI_APIKEY)
|
||||
// .apiSecret(IMUIKitConfig.AI_APISECRET)//应用申请的appid三元组
|
||||
// .logLevel(0);
|
||||
// int ret = SparkChain.getInst().init(getApplicationContext(), sparkChainConfig);
|
||||
// if (ret == 0) {
|
||||
// Log.d(TAG, "SDK初始化成功:" + ret);
|
||||
// LLMConfig llmConfig = LLMConfig.builder();
|
||||
// llmConfig.domain("generalv3");
|
||||
//// llmConfig.url("ws(s)://spark-api.xf-yun.com/v3.1/chat");
|
||||
// //memory有两种,windows_memory和tokens_memory,二选一即可
|
||||
// Memory window_memory = Memory.windowMemory(5);
|
||||
// llm = new LLM(llmConfig, window_memory);
|
||||
//// Memory tokens_memory = Memory.tokenMemory(8192);
|
||||
//// llm = new LLM(llmConfig,tokens_memory);
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void initLang() {
|
||||
if (DataUtils.get(getAppContext(), "locale", -1) == -1) {//如果一次都没有设置,则需要默认设置一次,以便Activity中生效
|
||||
// PreferencesToolkits.getNew(getAppContext(),"locale",0);
|
||||
// if (Locale.getDefault().getCountry().equals(Locale.TAIWAN.getCountry())) {
|
||||
// DataUtils.set(getAppContext(), "locale", 0);
|
||||
// } else if (Locale.getDefault().equals(Locale.ENGLISH)) {
|
||||
// DataUtils.set(getAppContext(), "locale", 2);
|
||||
// } else if (Locale.getDefault().equals(Locale.JAPANESE)) {
|
||||
// DataUtils.set(getAppContext(), "locale", 3);
|
||||
// } else {
|
||||
DataUtils.set(getAppContext(), "locale", 1);
|
||||
// }
|
||||
|
||||
}
|
||||
int loc = DataUtils.get(getAppContext(), "locale", -1);
|
||||
ChatDataUtils.set(getAppContext(), "locale", loc);
|
||||
|
||||
LogUtils.i("下标:" + loc);
|
||||
// switch (loc) {
|
||||
// case 0:
|
||||
// LanguageUtils.updateAppContextLanguage(Locale.TRADITIONAL_CHINESE, null);
|
||||
// applyLanguage(Resources.getSystem(), Locale.TRADITIONAL_CHINESE);
|
||||
// //修复StringUtils获取string的语言
|
||||
// applyLanguage(this.getResources(), Locale.TRADITIONAL_CHINESE);
|
||||
// break;
|
||||
//
|
||||
// case 1:
|
||||
LanguageUtils.updateAppContextLanguage(Locale.CHINESE, null);
|
||||
applyLanguage(Resources.getSystem(), Locale.CHINESE);
|
||||
//修复StringUtils获取string的语言
|
||||
applyLanguage(this.getResources(), Locale.CHINESE);
|
||||
// break;
|
||||
//
|
||||
// case 2:
|
||||
// LanguageUtils.updateAppContextLanguage(Locale.ENGLISH, null);
|
||||
// applyLanguage(Resources.getSystem(), Locale.ENGLISH);
|
||||
// //修复StringUtils获取string的语言
|
||||
// applyLanguage(this.getResources(), Locale.ENGLISH);
|
||||
// break;
|
||||
//
|
||||
// case 3:
|
||||
// LanguageUtils.updateAppContextLanguage(Locale.JAPANESE, null);
|
||||
// applyLanguage(Resources.getSystem(), Locale.JAPANESE);
|
||||
// //修复StringUtils获取string的语言
|
||||
// applyLanguage(this.getResources(), Locale.JAPANESE);
|
||||
// //修复StringUtils获取string的语言
|
||||
// break;
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//设置当前语言
|
||||
public static void applyLanguage(Resources resources, Locale locale) {
|
||||
Locale.setDefault(locale);
|
||||
Configuration config = resources.getConfiguration();
|
||||
DisplayMetrics dm = resources.getDisplayMetrics();
|
||||
config.locale = locale;
|
||||
resources.updateConfiguration(config, dm);
|
||||
}
|
||||
|
||||
private void initUIKit() {
|
||||
SDKOptions sdkOptions = NimSDKOptionConfig.getSDKOptions(this, DataUtils.readAppKey(this));
|
||||
IMKitClient.init(this, getLoginInfo(), sdkOptions);
|
||||
ALog.d(Constant.PROJECT_TAG, TAG, "initUIKit");
|
||||
|
||||
if (IMKitUtils.isMainProcess(this)) {
|
||||
ALog.d(Constant.PROJECT_TAG, TAG, "initUIKit:isMainProcess");
|
||||
// LocationKitClient.init(this);
|
||||
//huawei push
|
||||
// ActivityMgr.INST.init(this);
|
||||
//oppo push
|
||||
HeytapPushManager.init(this, true);
|
||||
try {
|
||||
//vivo push
|
||||
PushClient.getInstance(this).initialize();
|
||||
} catch (VivoPushException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
IMKitClient.toggleNotification(SettingRepo.isPushNotify());
|
||||
IMKitClient.registerMixPushMessageHandler(new PushMessageHandler());
|
||||
SettingRepo.setShowReadStatus(false);
|
||||
IMKitClient.getStatus();
|
||||
}
|
||||
}
|
||||
|
||||
public LoginInfo getLoginInfo() {
|
||||
|
||||
String account = DataUtils.get(IMApplication.getAppContext(), IMUIKitConfig.LOGIN_ACCOUNT, "");
|
||||
String token = DataUtils.get(IMApplication.getAppContext(), IMUIKitConfig.LOGIN_TOKEN, "");
|
||||
//填入你的 account and token
|
||||
if (!TextUtils.isEmpty(account) && !TextUtils.isEmpty(token)) {
|
||||
//每30天重新登录一次
|
||||
if(System.currentTimeMillis()- DataUtils.get(IMApplication.getAppContext(),"last_login_time",0l)>(1000*60*60*24*30)){
|
||||
return null;
|
||||
}else {
|
||||
return new LoginInfo(account, token);
|
||||
}
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果返回值为 null,则全部使用默认参数。
|
||||
private SDKOptions options() {
|
||||
SDKOptions options = new SDKOptions();
|
||||
//此处仅设置appkey,其他设置请自行参看信令文档设置 :https://dev.yunxin.163.com/docs/product/信令/SDK开发集成/Android开发集成/初始化
|
||||
options.appKey = "23c9cbddd4b876908efdccd0a6f2638d";
|
||||
return options;
|
||||
}
|
||||
|
||||
|
||||
public static Context getAppContext() {
|
||||
return AppContext;
|
||||
}
|
||||
|
||||
public final List<Activity> activities = new ArrayList<>();
|
||||
|
||||
//用于系统杀死应用之后,系统恢复应用,可能存在没有登录的异常
|
||||
//此处如果在没有登录的情况下,其他页面打开的时候进行finish();除了MainActivity
|
||||
//MainActivity启动进行登录检测,如果没有登录进行登录操作
|
||||
private void registerActivityLifeCycle() {
|
||||
registerActivityLifecycleCallbacks(
|
||||
new ActivityLifecycleCallbacks() {
|
||||
@Override
|
||||
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
|
||||
if (TextUtils.isEmpty(IMKitClient.account())
|
||||
&& !(activity instanceof MainActivity || activity instanceof WelcomeActivity)
|
||||
&& !coldStart) {
|
||||
activity.finish();
|
||||
} else {
|
||||
activities.add(activity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityStarted(Activity activity) {
|
||||
foregroundActCount++;
|
||||
closeNotify();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResumed(Activity activity) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityPaused(Activity activity) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityStopped(Activity activity) {
|
||||
foregroundActCount--;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityDestroyed(Activity activity) {
|
||||
if (activities.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
activities.remove(activity);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void removeAllActivity() {
|
||||
while (activities.size() > 0) {
|
||||
try {
|
||||
activities.get(activities.size() - 1).finish();
|
||||
activities.remove(activities.size() - 1);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void closeNotify() {
|
||||
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
manager.cancelAll();
|
||||
}
|
||||
|
||||
public void clearActivity(Activity exclude) {
|
||||
for (int i = 0; i < activities.size(); i++) {
|
||||
if (activities.get(i) != null && activities.get(i) != exclude) {
|
||||
activities.get(i).finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void setColdStart(boolean value) {
|
||||
coldStart = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTerminate() {
|
||||
// SparkChain.getInst().unInit();
|
||||
foregroundActCount = 0;
|
||||
super.onTerminate();
|
||||
}
|
||||
|
||||
|
||||
public static int getForegroundActCount() {
|
||||
return foregroundActCount;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user