feat: 光环助手跳转链接规则优化(路由框架切换至 theRouter) https://jira.shanqu.cc/browse/GHZSCY-5889

This commit is contained in:
陈君陶
2024-10-28 17:42:56 +08:00
parent f4b54cbfa0
commit 0ae6279d60
496 changed files with 2768 additions and 8929 deletions

View File

@ -11,7 +11,7 @@ import android.os.Looper;
import android.preference.PreferenceManager;
import android.util.Log;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.constant.Config;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.core.HaloApp;
@ -61,7 +61,7 @@ public class AppUncaughtHandler implements UncaughtExceptionHandler {
saveCrashLogToSp(e);
restart(mContext);
ISentryProvider sentryProvider = (ISentryProvider) ARouter.getInstance().build(RouteConsts.provider.sentry).navigation();
ISentryProvider sentryProvider = TheRouter.get(ISentryProvider.class);
if (sentryProvider != null) {
sentryProvider.captureException(e);
}

View File

@ -36,10 +36,8 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Lifecycle;
import com.alibaba.android.arouter.core.LogisticsCenter;
import com.alibaba.android.arouter.exception.NoRouteFoundException;
import com.alibaba.android.arouter.facade.Postcard;
import com.alibaba.android.arouter.launcher.ARouter;
import com.gh.gamecenter.core.iinterface.ISplashScreen;
import com.therouter.TheRouter;
import com.blankj.utilcode.util.LanguageUtils;
import com.facebook.drawee.view.SimpleDraweeView;
import com.gh.gamecenter.common.BuildConfig;
@ -190,15 +188,14 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
String xapkUnzipActivity = SPUtils.getString(Constants.SP_XAPK_UNZIP_ACTIVITY);
String xapkUrl = SPUtils.getString(Constants.SP_XAPK_URL);
Utils.log("页面重建了--" + xapkUnzipActivity + "--" + xapkUrl);
final Class<?> destination = ExtensionsKt.toDestinationClass(RouteConsts.activity.splashActivity);
if (destination != null && this.getClass().isAssignableFrom(destination)) {
if (this instanceof ISplashScreen) {
SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, "");
SPUtils.setString(Constants.SP_XAPK_URL, "");
return;
}
if (this.getClass().getName().equals(xapkUnzipActivity) && !TextUtils.isEmpty(xapkUrl)) {
IDownloadManagerProvider downloadManagerConfig = (IDownloadManagerProvider) ARouter.getInstance().build(RouteConsts.provider.downloadManager).navigation();
IPackageInstallerProvider packageInstallerConfig = (IPackageInstallerProvider) ARouter.getInstance().build(RouteConsts.provider.packageInstaller).navigation();
IDownloadManagerProvider downloadManagerConfig = TheRouter.get(IDownloadManagerProvider.class);
IPackageInstallerProvider packageInstallerConfig = TheRouter.get(IPackageInstallerProvider.class);
DownloadEntity downloadEntity = downloadManagerConfig.getDownloadEntityByUrl(xapkUrl);
if (downloadEntity != null) {
NewFlatLogUtils.INSTANCE.logGameInstall(downloadEntity.getGameId(), downloadEntity.getName(), "自动安装");
@ -255,15 +252,8 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
@Override
public void setContentView(View view) {
if (PackageFlavorHelper.IS_TEST_FLAVOR) {
try {
final Postcard postcard = ARouter.getInstance().build(RouteConsts.activity.splashActivity);
LogisticsCenter.completion(postcard);
final Class<?> destination = postcard.getDestination();
if (!(this.getClass().isAssignableFrom(destination))) {
view = getRootViewWithEnvIndicator(view);
}
} catch (NoRouteFoundException e) {
e.printStackTrace();
if (!(this instanceof ISplashScreen)) {
view = getRootViewWithEnvIndicator(view);
}
}
super.setContentView(view);
@ -355,9 +345,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
if (BuildConfig.DEBUG) {
tv.setOnLongClickListener(v -> {
IEntranceUtilsProvider entranceUtilsProvider = (IEntranceUtilsProvider) ARouter.getInstance()
.build(RouteConsts.provider.entranceUtils)
.navigation();
IEntranceUtilsProvider entranceUtilsProvider = TheRouter.get(IEntranceUtilsProvider.class);
entranceUtilsProvider.saveShortcut(this.getClass().getName(), getIntent().getExtras());
return true;
});
@ -408,7 +396,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
if (getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)
&& !showDialog.isUsed()) {
showDialog.setUsed(true);
IPackageInstallerProvider packageInstallerConfig = (IPackageInstallerProvider) ARouter.getInstance().build(RouteConsts.provider.packageInstaller).navigation();
IPackageInstallerProvider packageInstallerConfig = TheRouter.get(IPackageInstallerProvider.class);
if (DOWNLOAD_HIJACK.equals(showDialog.getType())) {
DownloadEntity downloadEntity = showDialog.getDownloadEntity();
DialogHelper.showQqSessionDialog(this);// 建议用户联系客服
@ -454,19 +442,18 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
}
, () -> {
if (NetworkUtils.isQuickLoginEnabled(BaseActivity.this)) {
IQuickLoginProvider quickLoginConfig = (IQuickLoginProvider) ARouter.getInstance().build(RouteConsts.provider.quickLogin).navigation();
quickLoginConfig.startLogin(BaseActivity.this, "你的账号已在另外一台设备登录多设备-重新登录", null);
IQuickLoginProvider quickLoginConfig = TheRouter.get(IQuickLoginProvider.class);
if (quickLoginConfig != null) {
quickLoginConfig.startLogin(BaseActivity.this, "你的账号已在另外一台设备登录多设备-重新登录", null, null);
}
} else {
ARouter.getInstance().build(RouteConsts.activity.loginActivity)
TheRouter.build(RouteConsts.activity.loginActivity)
.withString(EntranceConsts.KEY_ENTRANCE, "你的账号已在另外一台设备登录多设备-重新登录")
.navigation();
}
}
);
IQGameProvider qProvider = (IQGameProvider) ARouter
.getInstance()
.build(RouteConsts.provider.qGame)
.navigation();
IQGameProvider qProvider = TheRouter.get(IQGameProvider.class);
if (qProvider != null) {
qProvider.stopAllMiniApp(true); // 关闭所有QQ小游戏进程
}
@ -829,7 +816,7 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements IBus
* 初始化图片加载器
*/
private void initImageLoaderIfNeeded() {
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
if (appProvider != null) {
appProvider.initImageLoaderIfNeeded();
}

View File

@ -7,7 +7,7 @@ import android.app.DownloadManager;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.common.retrofit.BiResponse;
import com.gh.gamecenter.common.retrofit.Response;
@ -110,7 +110,7 @@ public abstract class ListViewModel<LD /*ListData*/, ID /*ItemData*/> extends Ba
}
// 针对游戏的一些操作(过滤隐藏游戏过滤隐藏APK吗增加下载数据)
IHandleGameResponseProvider handleGameResponse = (IHandleGameResponseProvider) ARouter.getInstance().build(RouteConsts.provider.handleGameResponse).navigation();
IHandleGameResponseProvider handleGameResponse = TheRouter.get(IHandleGameResponseProvider.class);
if (handleGameResponse != null) {
response = (List<LD>) handleGameResponse.handleGameResponse(response, mEntrance);
}

View File

@ -1,12 +1,12 @@
package com.gh.gamecenter.common.constant;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.core.provider.IPackageUtilsProvider;
import com.gh.gamecenter.core.utils.TimeUtils;
public class Constants {
private static final IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation();
private static final IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class);
public final static int LIST_FOOTER_ITEM = 1;
public final static int LIST_HEAD_ITEM = 1;
@ -25,8 +25,6 @@ public class Constants {
public static final String SHOULD_SHOW_VIDEO_MOBILE_WARNING = "should_show_video_mobile_warning";
public static final String GAME_DETAIL_COME_IN = "game_detail_come_in"; // 从游戏详情进入
public static final String EB_QUIT_LOGIN = "quit_login";
public static final String EB_GAME_DETAIL = "eb_game_detail";

View File

@ -11,8 +11,8 @@ public class EntranceConsts {
public static final String KEY_TO = "to";
public static final String KEY_NEXT_TO = "next_to";
public static final String KEY_NEWSID = "newsId";
public static final String KEY_GAMEID = "gameId";
public static final String KEY_GAME_ID = "game_id";
public static final String KEY_GAMEID = KEY_GAME_ID;
public static final String KEY_ID = "id";
public static final String KEY_URL = "url";
public static final String KEY_BUNDLE = "bundle";
@ -117,6 +117,10 @@ public class EntranceConsts {
public static final String KEY_PLATFORM = "platform";
public static final String KEY_GAME_NAME = "game_name";
public static final String KEY_GAME_ENTITY = "game_entity";
public static final String KEY_DEFAULT_TAB = "default_tab";
public static final String KEY_PLATFORMS = "platforms";
public static final String KEY_PLATFORMS_AUTO_DOWNLOAD = "platform_auto_download";
public static final String KEY_GAME_INFO = "game_info";
@ -176,12 +180,13 @@ public class EntranceConsts {
public static final String KEY_CATEGORY_TITLE = "category_title";
public static final String KEY_BLOCK_DATA = "blockData";
public static final String KEY_ASK_TAG = "askTag";
public static final String KEY_SCROLL_TO_LIBAO = "libao";
public static final String KEY_SCROLL_TO_LIBAO = "scroll_to_libao";
public static final String KEY_SCROLL_TO_SERVER = "scroll_to_server";
public static final String KEY_ASK_COLUMN_TAG = "askColumnTag";
public static final String KEY_COMMUNITY_ID = "community_id";
public static final String KEY_COMMUNITY_NAME = "community_name";
public static final String KEY_COMMUNITY_DATA = "communityData";
public static final String KEY_COMMUNITY_TYPE = "community_type";
public static final String KEY_TRACE_EVENT = "trace_event";
public static final String KEY_SUBJECT_DATA = "subjectData";
public static final String KEY_SUBJECT_TYPE = "subjectType";
@ -199,8 +204,8 @@ public class EntranceConsts {
public static final String KEY_SCROLL_TO_COMMENT_AREA = "scroll_to_comment_area";
public static final String KEY_RATING_STAR_COUNT = "ratingStarCount";
public static final String KEY_QUESTION_MODERATOR_PATCH = "questionModeratorPatch";
public static final String KEY_SKIP_GAME_COMMENT = "skipGameComment";
public static final String KEY_OPEN_PLATFORM_WINDOW = "openPlatformWindow";
public static final String KEY_COMMENT_AS_DEFAULT_TAB = "comment_as_default_tab";
public static final String KEY_OPEN_PLATFORM_WINDOW = "open_platform_window";
public static final String KEY_OPEN_KEYBOARD = "openKeyboard";
public static final String KEY_PATH_VIDEO = "pathVideo";
public static final String KEY_VIDEO_ID = "videoId";
@ -215,7 +220,7 @@ public class EntranceConsts {
public static final String KEY_COLLECTION_NAME = "collectionName";
public static final String KEY_NAVIGATION_TITLE = "navigationTitle";
public static final String KEY_IMAGE_CROP_RATIO = "imageCropRatio";
public static final String KEY_OPEN_VIDEO_STREAMING = "openVideoStreaming";
public static final String KEY_OPEN_VIDEO_STREAMING = "open_video_streaming";
public static final String KEY_REFERER = "referer";
public static final String KEY_UUID = "uuid";
public static final String KEY_IS_HOME_VIDEO = "isHomeVideo";
@ -351,4 +356,10 @@ public class EntranceConsts {
public static final String KEY_SHOW_ADD_GAMES_DIALOG = "show_add_games_dialog";
public static final String KEY_IS_AUTO_LOAD = "key_is_auto_load";
public static final String TAB_TYPE_DESC = "详情";
public static final String TAB_TYPE_TRENDS = "专区";
public static final String TAB_TYPE_ARCHIVE = "云存档";
public static final String TAB_TYPE_RATING = "评价";
public static final String TAB_TYPE_BBS = "论坛";
}

View File

@ -15,6 +15,10 @@ object RouteConsts {
const val libaoDetailActivity = "/app/libaoDetailActivity"
const val fullScreenVideoActivity = "/app/FullScreenVideoActivity"
const val gameDetailActivity = "/activity/game_detail"
const val userHomeActivity = "/activity/user_home"
const val quickLoginActivity = "/activity/quick_login_activity"
const val aboutActivity = "/settings/AboutActivity"
const val webActivity = "/setting/WebActivity"
const val weiBoShareActivity = "/setting/weiBoShareActivity"
@ -34,102 +38,13 @@ object RouteConsts {
}
object provider {
const val app = "/services/app"
const val buildConfig = "/services/buildConfig"
const val activation = "/services/activation"
const val directUtils = "/services/directUtils"
const val defaultUrlHandler = "/services/defaultUrlHandler"
const val config = "/services/config"
const val configSetting = "/services/configSetting"
const val packageUtils = "/services/packageUtils"
const val checkLogin = "/services/checkLogin"
const val dialogUtils = "/services/dialogUtils"
const val webActivity = "/services/webActivity"
const val downloadManager = "/services/downloadManager"
const val packageInstaller = "/services/packageInstaller"
const val packageHelper = "/services/packageHelper"
const val entranceUtils = "/services/entranceUtils"
const val reservationRepository = "/services/reservationRepository"
const val dataUtils = "/services/dataUtils"
const val errorHelper = "/services/errorHelper"
const val messageUnreadRepository = "/services/messageUnreadRepository"
const val logUtils = "/services/logUtils"
const val wechatHelper = "/services/wechatHelper"
const val timeUtil = "/services/timeUtil"
const val linkDirectUtils = "/services/linkDirectUtils"
const val handleGameResponse = "/services/handleGameResponse"
const val usageStatsHelper = "/services/usageStatsHelper"
const val mainActivity = "/services/mainActivity"
const val shellActivity = "/services/shellActivity"
const val browserInstallHelper = "/services/browserInstallHelper"
const val historyHelper = "/services/historyHelper"
const val updateManager = "/services/updateManager"
const val vhelper = "/services/vhelper"
const val regionSettingHelper = "/services/regionSettingHelper"
const val fixedRateJobHelper = "/services/fixedRateJobHelper"
const val bindingAdapters = "/services/bindingAdapters"
const val gameDetail = "/services/gameDetail"
const val packagesManager = "/services/packagesManager"
const val adHelper = "/services/adHelper"
const val commentUtils = "/services/commentUtils"
const val subject = "/services/subject"
const val messageDetail = "/services/messageDetail"
const val commentDetail = "/services/commentDetail"
const val newCommentDetail = "/services/newCommentDetail"
const val simpleAnswerDetail = "/services/simpleAnswerDetail"
const val gameCollectionDetail = "/services/gameCollectionDetail"
const val dataCollection = "/services/dataCollection"
const val shareCardActivity = "/services/shareCardActivity"
const val shareCardPicActivity = "/services/shareCardPicActivity"
const val concernActivity = "/services/concernActivity"
const val visitManager = "/services/visitManager"
const val commentManager = "/services/commentManager"
const val concernContentUtils = "/services/concernContentUtils"
const val concernGiftPackUtils = "/services/concernGiftPackUtils"
const val concernShareNews = "/services/concernShareNews"
const val libaoUtils = "/services/libaoUtils"
const val gameTrendsHelper = "/services/gameTrendsHelper"
const val searchTabUtils = "/services/SearchTabUtils"
object Action {
const val LOGIN_SUCCESS_ACTION = "action://login/success"
}
const val downloadButtonClickedHandler = "/downloadbutton/clickedHandler"
const val userManager = "/login/userManager"
const val login = "/login/login"
const val helpAndFeedback = "/help/helpAndFeedback"
const val setting = "/settings/setting"
const val composeSetting = "/composeSetting/composeSetting"
const val pkg = "/pkg/pkg"
const val pkgConfig = "/pkgConfig/pkgConfig"
const val floatingwindow = "/floatingwindow/floatingwindow"
const val exposureManager = "/exposure/exposureManager"
const val sensors = "/sensors/sensors"
const val csjAd = "/csj/csj"
const val oaid = "/oaid/oaid"
const val concernInfo = "/message/concernInfo"
const val qGame = "/qGame/qGame"
const val push = "/push/push"
const val realName = "/realName/realName"
const val miniGameRecentPlayed = "/services/miniGameRecentPlayed"
const val sentry = "/sentry/sentry"
const val vaAd = "/vaAd/vaAd"
const val vaCore = "/vaCore/vaCore"
const val quickLogin = "/quickLogin/quickLogin"
object QueryParams {
const val REQUIRE_LOGIN = "require_login"
const val SOURCE = "source"
}
}

View File

@ -13,7 +13,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import androidx.fragment.app.FragmentActivity
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.base.fragment.BaseDialogFragment
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.databinding.DialogAlertDefaultBinding
@ -37,7 +37,7 @@ class ManageExternalStoragePermissionDialogFragment : BaseDialogFragment() {
contentTv.text = "需要所有文件访问权限,请打开权限设置页面"
confirmTv.setOnClickListener {
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider?
val appProvider = TheRouter.get(IAppProvider::class.java)
appProvider?.setDisableSplashAdTemporarily(true)
val intent = Intent().apply {
action = Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
@ -55,7 +55,7 @@ class ManageExternalStoragePermissionDialogFragment : BaseDialogFragment() {
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
AppExecutor.uiExecutor.executeWithDelay({
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider?
val appProvider = TheRouter.get(IAppProvider::class.java)
appProvider?.setDisableSplashAdTemporarily(false)
}, 100)
}

View File

@ -11,10 +11,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.base.fragment.BaseDialogFragment
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.databinding.DialogNotificationHintBinding
import com.gh.gamecenter.common.entity.NotificationStyleEntity
import com.gh.gamecenter.common.entity.NotificationUgc
@ -88,8 +87,7 @@ class NotificationHintDialogFragment : BaseDialogFragment() {
activateTv.setOnClickListener {
dismissAllowingStateLoss()
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//这种方案适用于 API 26, 即8.0含8.0)以上可以用
val intent = Intent()

View File

@ -10,7 +10,7 @@ import android.os.DeadObjectException
import android.provider.Settings
import android.telephony.TelephonyManager
import android.text.TextUtils
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.core.utils.SPUtils
import com.gh.gamecenter.common.HaloApp
@ -34,11 +34,9 @@ object MetaUtil {
fun refreshMeta() {
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
val buildConfigProvider =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val userManagerProvider =
ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val appProvider = TheRouter.get(IAppProvider::class.java)
val buildConfigProvider = TheRouter.get(IBuildConfigProvider::class.java)
val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java)
m = Meta(
mac = null,
jnfj = getBase64EncodedIMEI(),
@ -77,7 +75,7 @@ object MetaUtil {
}
private fun getChannel(): String? {
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
val appProvider = TheRouter.get(IAppProvider::class.java)
return appProvider?.getChannel()
}
@ -87,7 +85,7 @@ object MetaUtil {
@JvmStatic
fun getIMEI(): String {
return ""
// val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
// val appProvider = TheRouter.get(IAppProvider::class.java)
// if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) {
// return ""
// }
@ -175,7 +173,7 @@ object MetaUtil {
@JvmStatic
fun getAndroidId(): String {
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
val appProvider = TheRouter.get(IAppProvider::class.java)
if (appProvider?.isUserAcceptPrivacyPolicy(HaloApp.getInstance()) == false) {
return ""
}

View File

@ -5,12 +5,12 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.alibaba.android.arouter.facade.template.IProvider
import com.gh.gamecenter.common.base.fragment.BaseFragment
import com.gh.gamecenter.common.entity.SimpleGameEntity
import com.gh.gamecenter.common.entity.SuggestType
interface IHelpAndFeedbackProvider : IProvider {
interface IHelpAndFeedbackProvider {
fun isSuggestionActivity(activity: Activity): Boolean

View File

@ -4,9 +4,9 @@ import android.view.View
import android.view.ViewGroup
import android.view.ViewStub
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.template.IProvider
interface ILaunchAd : IProvider {
interface ILaunchAd {
fun requestAd(
fragment: Fragment,
container: ViewGroup,

View File

@ -3,7 +3,7 @@ package com.gh.gamecenter.common.retrofit;
import android.content.Context;
import android.text.TextUtils;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.common.exposure.meta.MetaUtil;
import com.gh.gamecenter.common.utils.NetworkUtils;
@ -44,7 +44,7 @@ public class OkHttpCacheInterceptor implements Interceptor {
// 拦截参数缺失的非法请求
if (request.url().pathSegments().contains("")) {
IBuildConfigProvider buildConfig = (IBuildConfigProvider) ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation();
IBuildConfigProvider buildConfig = TheRouter.get(IBuildConfigProvider.class);
if (buildConfig.isDebug()) {
Utils.log("OkHttpCacheInterceptor-> 已拦截参数缺失的请求:" + request.url().toString());
}
@ -88,9 +88,9 @@ public class OkHttpCacheInterceptor implements Interceptor {
.build();
}
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IUserManagerProvider userManagerProvider = (IUserManagerProvider) ARouter.getInstance().build(RouteConsts.provider.userManager).navigation();
IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation();
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
IUserManagerProvider userManagerProvider = TheRouter.get(IUserManagerProvider.class);
IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class);
String token = userManagerProvider.getToken();
String deviceId = appProvider.getGid();
String temporaryLocalDeviceId = appProvider.getTemporaryLocalDeviceId();
@ -175,8 +175,8 @@ public class OkHttpCacheInterceptor implements Interceptor {
*/
private String addVersionAndChannel(String url) {
if (TextUtils.isEmpty(url)) return url;
IBuildConfigProvider buildConfigProvider = (IBuildConfigProvider) ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation();
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IBuildConfigProvider buildConfigProvider = TheRouter.get(IBuildConfigProvider.class);
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
if (url.contains("?")) {
return url + "&version=" + buildConfigProvider.getVersionName() + "&channel=" + appProvider.getChannel();
} else {
@ -188,7 +188,7 @@ public class OkHttpCacheInterceptor implements Interceptor {
* 为 url 添加用户 mark
*/
private String appendUserMarkIfNeeded(String url) {
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
if (TextUtils.isEmpty(url)
|| TextUtils.isEmpty(appProvider.getServerUserMark())
|| url.contains("mark=")) {

View File

@ -3,9 +3,8 @@ package com.gh.gamecenter.common.retrofit
import android.content.Context
import android.os.Build
import android.text.TextUtils
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.HaloApp
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.exposure.meta.MetaUtil
import com.gh.gamecenter.common.utils.DeviceUtils
import com.gh.gamecenter.core.provider.IBuildConfigProvider
@ -61,8 +60,7 @@ class OkHttpRetryInterceptor constructor(context: Context, val maxRetryCount: In
}
if (response != null && token != null) { // TOKEN 过期处理
val userManagerProvider =
ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java)
userManagerProvider?.refreshToken(token, {
val newBuilder = request.newBuilder()
newBuilder.header("TOKEN", userManagerProvider.getToken())
@ -80,8 +78,7 @@ class OkHttpRetryInterceptor constructor(context: Context, val maxRetryCount: In
response = doRequest(chain, request)
}
}
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
// 上报网络错误,过滤 404 以及非用户可感知的请求
val api = pathSegmentsToString(request.url.pathSegments)
if (tryCount == maxRetryCount + 1
@ -92,7 +89,7 @@ class OkHttpRetryInterceptor constructor(context: Context, val maxRetryCount: In
"网络错误",
"访问接口", api,
"网络状态", DeviceUtils.getNetwork(HaloApp.getInstance()),
"光环版本", buildConfig.getVersionName(),
"光环版本", buildConfig?.getVersionName(),
"网络状态", DeviceUtils.getNetwork(HaloApp.getInstance()),
"JNFJ", MetaUtil.getBase64EncodedIMEI(),
"机型", Build.MODEL,

View File

@ -1,7 +1,7 @@
package com.gh.gamecenter.common.tracker
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.exposure.meta.MetaUtil
import com.gh.gamecenter.common.exposure.meta.MetaUtil.getBase64EncodedAndroidId
@ -127,7 +127,7 @@ object TrackerLogger {
fun logAppLaunch(context: Context) {
val jsonObject = JSONObject()
val payloadObject = JSONObject()
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
val appProvider = TheRouter.get(IAppProvider::class.java)
tryCatchInRelease {
payloadObject.put("launch_id", Tracker.launchId)

View File

@ -3,7 +3,7 @@ package com.gh.gamecenter.common.utils
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Matrix
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.HaloApp
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.core.provider.IConfigProvider
@ -35,7 +35,7 @@ object CompressImageUtils {
*/
@Throws(Exception::class)
fun compressImageAndSaveToFile(imageFile: File, compressGif: Boolean): File {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val imageType = ImageInfoExtractor.getImageType(imageFile)
// 小于某一个设定的值时,直接返回原图
if (imageType != ImageInfoExtractor.TYPE_ANIMATED_WEBP && imageFile.length() < configProvider?.getUploadLimitSize() ?: compressLimitSize) {
@ -110,7 +110,7 @@ object CompressImageUtils {
val longSide = Math.max(height, width) //最长边
val shortSide = Math.min(height, width) //最短边
val scale = longSide.toFloat() / shortSide // 长短边比例
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val compressLimit = configProvider?.getSize() ?: defaultCompressBorder
if (longSide > compressLimit && shortSide > compressLimit) {

View File

@ -2,7 +2,7 @@ package com.gh.gamecenter.common.utils;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.common.exposure.meta.MetaUtil;
import com.gh.gamecenter.common.loghub.LoghubUtils;
@ -51,8 +51,8 @@ public class DataLogUtils {
// 上传日志
public static void uploadLog(Context context, String topic, Map<String, Object> map) {
IPackageUtilsProvider packageUtilsConfig = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation();
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IPackageUtilsProvider packageUtilsConfig = TheRouter.get(IPackageUtilsProvider.class);
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
String version = packageUtilsConfig.getGhVersionName();
String user = Installation.getUUID(context);
String channel = appProvider.getChannel();

View File

@ -23,7 +23,7 @@ import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentActivity
import androidx.viewbinding.ViewBinding
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.base.TrackableDialog
import com.gh.gamecenter.common.callback.ConfirmListener
@ -520,17 +520,7 @@ object DialogHelper {
"检查升级",
"取消",
confirmClickCallback = {
val isComposeEnabled = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ARouter.getInstance().build(RouteConsts.provider.composeSetting).navigation() != null
} else {
false
}
val settingProvider: ISettingProvider? = if (isComposeEnabled) {
ARouter.getInstance().build(RouteConsts.provider.composeSetting).navigation() as? ISettingProvider
} else {
ARouter.getInstance().build(RouteConsts.provider.setting).navigation() as? ISettingProvider
}
val settingProvider = TheRouter.get(ISettingProvider::class.java)
context.startActivity(settingProvider?.getAboutIntent(context, true))
},
@ -778,14 +768,13 @@ object DialogHelper {
// 网络劫持时 打开QQ客户端创建临时会话
@JvmStatic
fun showQqSessionDialog(context: Context) {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as IConfigProvider
val directProvider =
ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as IDirectProvider
val qq = configProvider.getQQ()
val configProvider = TheRouter.get(IConfigProvider::class.java)
val directProvider = TheRouter.get(IDirectProvider::class.java)
val qq = configProvider?.getQQ() ?: ""
showDialog(
context, "警告", "您当前网络环境异常,下载地址可能被运营商恶意替换(网络劫持)" +
"如多次下载失败请联系客服获取正确的下载地址客服QQ" + qq + "", "前往QQ", "取消",
{ directProvider.directToQqConversation(context, qq) },
{ directProvider?.directToQqConversation(context, qq) },
extraConfig = Config(centerTitle = true)
)
}
@ -801,10 +790,7 @@ object DialogHelper {
cancelText = context.getString(R.string.unspported_feature_dialog_cancel_text),
confirmClickCallback = {
if (context is FragmentActivity) {
val updateManager = ARouter
.getInstance()
.build(RouteConsts.provider.updateManager)
.navigation() as? IUpdateManagerProvider
val updateManager = TheRouter.get(IUpdateManagerProvider::class.java)
updateManager?.checkUpdate(context, false)
}
},

View File

@ -1,5 +1,7 @@
package com.gh.gamecenter.common.utils
import android.R.attr.gravity
import android.R.attr.orientation
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
@ -9,7 +11,7 @@ import android.widget.EditText
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.RouteConsts
@ -29,10 +31,7 @@ object EnvHelper {
@JvmStatic
val isGATApp: Boolean by lazy {
val buildConfig = ARouter
.getInstance()
.build(RouteConsts.provider.buildConfig)
.navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
buildConfig?.isGATApp() ?: false
}
@ -40,17 +39,13 @@ object EnvHelper {
@JvmStatic
val logProducerProject: String by lazy {
val buildConfig = ARouter
.getInstance()
.build(RouteConsts.provider.buildConfig)
.navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
buildConfig?.getLogProducerProject() ?: DEFAULT_LOG_PRODUCER_PROJECT
}
@JvmStatic
fun getHost(): String {
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
return if (!PackageFlavorHelper.IS_TEST_FLAVOR) {
buildConfig?.getApiHost() ?: ""
} else {
@ -64,8 +59,7 @@ object EnvHelper {
@JvmStatic
fun getVHost(): String {
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
return if (!PackageFlavorHelper.IS_TEST_FLAVOR) {
buildConfig?.getVDevApiHost() ?: ""
} else {
@ -79,8 +73,7 @@ object EnvHelper {
@JvmStatic
fun getNewHost(): String {
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
return if (!PackageFlavorHelper.IS_TEST_FLAVOR) {
buildConfig?.getNewApiHost() ?: ""
} else {
@ -94,21 +87,19 @@ object EnvHelper {
@JvmStatic
fun getWGameCPMHost(): String {
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
return buildConfig?.getWGameCPMApiHost() ?: ""
}
@JvmStatic
fun getWGameCPMBusiAppId(): String {
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
return buildConfig?.getWGameCPMBusiAppId() ?: ""
}
fun showChangeChannelDialog(context: Context, restartAfterChanges: Boolean = false) {
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
val appProvider = TheRouter.get(IAppProvider::class.java)
val layout = LinearLayout(context).apply {
layoutParams = LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,

View File

@ -13,6 +13,7 @@ import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.graphics.drawable.GradientDrawable
import android.net.Uri
import android.os.Build
import android.text.*
import android.text.format.Formatter
@ -43,15 +44,13 @@ import androidx.viewpager.widget.ViewPager
import androidx.webkit.WebSettingsCompat
import androidx.webkit.WebViewFeature
import com.airbnb.lottie.LottieAnimationView
import com.alibaba.android.arouter.core.LogisticsCenter
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.facebook.drawee.view.SimpleDraweeView
import com.gh.gamecenter.common.BuildConfig
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.callback.SimpleCallback
import com.gh.gamecenter.common.constant.Config
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.view.CustomLinkMovementMethod
import com.gh.gamecenter.common.view.ExpandTextView
import com.gh.gamecenter.core.HaloApp
@ -407,8 +406,7 @@ fun Fragment.ifLogin(entrance: String, action: (() -> Unit)? = null) {
}
fun Context.ifLogin(entrance: String, action: (() -> Unit)? = null) {
val checkLoginConfig =
ARouter.getInstance().build(RouteConsts.provider.checkLogin).navigation() as? ICheckLoginProvider
val checkLoginConfig = TheRouter.get(ICheckLoginProvider::class.java)
checkLoginConfig?.checkLogin(this, entrance, action)
}
@ -459,11 +457,9 @@ fun String.containHtmlTag(): Boolean {
* 用户行为相关
*/
fun Fragment.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
val provider = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
val userManagerProvider =
ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val dialogUtils =
ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
val provider = TheRouter.get(IDirectProvider::class.java)
val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java)
val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java)
if (userManagerProvider?.userShouldTakeRegulationBaseOnLastRemind() == true) {
dialogUtils?.showRegulationTestDialog(requireContext(),
{ provider?.directToRegulationTestPage(requireContext()) },
@ -474,11 +470,9 @@ fun Fragment.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
}
fun Context.showRegulationTestDialogIfNeeded(action: (() -> Unit)) {
val provider = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
val userManagerProvider =
ARouter.getInstance().build(RouteConsts.provider.userManager).navigation() as? IUserManagerProvider
val dialogUtils =
ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
val provider = TheRouter.get(IDirectProvider::class.java)
val userManagerProvider = TheRouter.get(IUserManagerProvider::class.java)
val dialogUtils = TheRouter.get(IDialogUtilsProvider::class.java)
if (userManagerProvider?.userShouldTakeRegulationBaseOnLastRemind() == true) {
dialogUtils?.showRegulationTestDialog(this,
{ provider?.directToRegulationTestPage(this) },
@ -954,11 +948,9 @@ fun CharSequence.interceptUrlSpanAndRoundImageSpan(
override fun onClick(widget: View) {
clickedCallback?.invoke(it.url)
val webActivityProvider =
ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider
val provider = ARouter.getInstance().build(RouteConsts.provider.defaultUrlHandler)
.navigation() as IDefaultUrlHandlerProvider
if (!provider.interceptUrl(widget.context, it.url, "", sourceEntrance = sourceEntrance)) {
val webActivityProvider = TheRouter.get(IWebProvider::class.java)
val provider = TheRouter.get(IDefaultUrlHandlerProvider::class.java)
if (provider != null && !provider.interceptUrl(widget.context, it.url, "", sourceEntrance = sourceEntrance)) {
webActivityProvider?.getIntent(widget.context, it.url, true)?.run {
widget.context.startActivity(this)
}
@ -1130,11 +1122,10 @@ fun DownloadEntity.putGameCategory(gameCategory: String) {
}
inline fun doOnMainProcessOnly(f: () -> Unit) {
val buildConfig =
ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
val packageUtilsConfig =
ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
val buildConfig = TheRouter.get(IBuildConfigProvider::class.java)
val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java)
val processName = packageUtilsConfig?.obtainProcessName()
if (processName == null || buildConfig?.getApplicationId() == processName) {
f.invoke()
} else {
@ -1154,7 +1145,7 @@ inline fun debugOnly(f: () -> Unit) {
}
inline fun testChannelOnly(f: () -> Unit) {
val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
val appProvider = TheRouter.get(IAppProvider::class.java)
if (appProvider?.getChannel() == Config.DEFAULT_CHANNEL) {
f()
}
@ -1590,20 +1581,6 @@ fun LottieAnimationView.setDownloadTipsAnimation(isPlaying: Boolean = false) {
}
}
/**
* ARouter根据路由获取Class
*/
fun String.toDestinationClass(): Class<*>? {
try {
val postcard = ARouter.getInstance().build(this)
LogisticsCenter.completion(postcard)
return postcard.destination
} catch (e: Exception) {
e.printStackTrace()
}
return null
}
/**
* RGB颜色转HSV颜色
*/
@ -1615,6 +1592,23 @@ fun List<Int>.colorRGBToHSV(): FloatArray {
return colorHSV
}
/**
* 获取没有 host 的 uri String
*/
fun Uri.dropSchemeAndHost(): String {
// Get the components of the URI
val path = path
val query = query
val fragment = fragment
// Build the string without the host
return StringBuilder().apply {
path?.let { append(it) }
query?.let { append("?$it") }
fragment?.let { append("#$it") }
}.toString()
}
/**
* 转HSV颜色
*/

View File

@ -11,12 +11,12 @@ import android.text.TextUtils
import android.view.View
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import com.therouter.TheRouter
import androidx.fragment.app.Fragment
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.alibaba.android.arouter.launcher.ARouter
import com.facebook.common.executors.CallerThreadExecutor
import com.facebook.common.references.CloseableReference
import com.facebook.datasource.DataSource
@ -94,7 +94,7 @@ object ImageUtils {
}
fun getUploadFileMaxSize(): Long {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val uploadLimitSize = configProvider?.getUploadLimitSize()
if (uploadLimitSize != null) {
return uploadLimitSize
@ -104,7 +104,7 @@ object ImageUtils {
@JvmStatic
fun getDefaultGifRule(): String {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val gifConfig = configProvider?.getGif()
if (gifConfig != null) {
return gifConfig
@ -114,7 +114,7 @@ object ImageUtils {
@JvmStatic
fun getWatermarkWidthGifRule(width: Int?): String {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val gifConfig = configProvider?.getGitThumb()
val gifWaterMark = configProvider?.getGifWaterMark()
if (gifConfig != null && gifWaterMark != null) {
@ -125,7 +125,7 @@ object ImageUtils {
@JvmStatic
fun getLimitWidthRule(width: Int?): String {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val jpegConfig = configProvider?.getJpeg()
if (jpegConfig != null) {
return "$jpegConfig,w_${width ?: 0}"
@ -138,7 +138,7 @@ object ImageUtils {
*/
@JvmStatic
private fun limitWidthWithRuleIfPossible(imageUrl: String?, width: Int?, loadAsAnimatedImage: Boolean = true): String? {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
var jpegConfig = configProvider?.getJpeg()
var webpConfig = configProvider?.getWebp() ?: configProvider?.getGif() ?: ""
@ -393,8 +393,7 @@ object ImageUtils {
if (width > 0) {
val ratioHeight = (width / processor.cutRatio).toInt()
if (ratioHeight > 0) {
val configProvider =
ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val cropSuffix = configProvider?.getImageCropSuffix() ?: ""
@ -702,7 +701,7 @@ object ImageUtils {
if (url.startsWith("res:")) return url
val idealSize = getIdealIconSize(width)
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
val resizeConfig = configProvider?.getImageResizeSuffix() ?: "?x-oss-process=image/resize"
return "$url$resizeConfig,h_$idealSize,w_$idealSize".also { addCachedUrl(it) }
@ -721,7 +720,7 @@ object ImageUtils {
}
fun getVideoSnapshot(videoUrl: String, progress: Long): String {
val configProvider = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
val configProvider = TheRouter.get(IConfigProvider::class.java)
return if (!configProvider?.getVideoSnapshotSuffix().isNullOrEmpty()) {
"$videoUrl${configProvider?.getVideoSnapshotSuffix()},t_$progress,f_jpg,w_0,h_0,ar_auto"
} else {

View File

@ -2,7 +2,7 @@ package com.gh.gamecenter.common.utils;
import android.annotation.SuppressLint;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.BuildConfig;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.common.entity.ShareResultEntity;
@ -36,7 +36,7 @@ public class LogUtils {
public static JSONObject getMetaObject() {
Meta meta = MetaUtil.INSTANCE.getMeta();
JSONObject metaObject = new JSONObject();
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
try {
metaObject.put("dia", MetaUtil.getBase64EncodedAndroidId());
metaObject.put("android_sdk", meta.getAndroid_sdk());
@ -62,7 +62,7 @@ public class LogUtils {
public static JSONObject getNewMetaObject() {
Meta meta = MetaUtil.INSTANCE.getMeta();
JSONObject metaObject = new JSONObject();
IAppProvider appProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
IAppProvider appProvider = TheRouter.get(IAppProvider.class);
try {
metaObject.put("dia", MetaUtil.getBase64EncodedAndroidId());
metaObject.put("android_sdk", meta.getAndroid_sdk());

View File

@ -4,7 +4,7 @@ import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.core.provider.IConfigProvider;
import com.gh.gamecenter.core.provider.IQuickLoginProvider;
@ -89,15 +89,15 @@ public class NetworkUtils {
* networktype字段获取网络状态0.未知1.流量 2.wifi3.数据流量+wifi
*/
public static boolean isOpenMobileData(Context context) {
Object navigation = ARouter.getInstance().build(RouteConsts.provider.quickLogin).navigation();
if (navigation instanceof IQuickLoginProvider) {
return ((IQuickLoginProvider) navigation).isOpenMobileData(context);
IQuickLoginProvider navigation = TheRouter.get(IQuickLoginProvider.class);
if (navigation != null) {
return navigation.isOpenMobileData(context);
}
return false;
}
public static boolean isJiguangQuickLoginSwitch() {
IConfigProvider configProvider = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation();
IConfigProvider configProvider = TheRouter.get(IConfigProvider.class);
if (configProvider != null) {
return configProvider.isJiguangSwitch();
} else {

View File

@ -3,7 +3,7 @@ package com.gh.gamecenter.common.utils
import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.NotificationManagerCompat
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.HaloApp
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.RouteConsts
@ -20,8 +20,7 @@ object NotificationHelper {
@JvmStatic
fun showNotificationHintDialog(ugc: NotificationUgc, callBack: ((isShow: Boolean) -> Unit)? = null) {
val showedNewVersion = SPUtils.getInt(Constants.SP_SHOWED_NOTIFICATION_NEW_VERSION, 0)
val packageUtilsConfig =
ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
val packageUtilsConfig = TheRouter.get(IPackageUtilsProvider::class.java)
val currentVersion = packageUtilsConfig?.getGhVersionCode() ?: 0
// 版本升级后重置数据
if (currentVersion > showedNewVersion) {

View File

@ -25,7 +25,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.FragmentActivity
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.RouteConsts
@ -150,8 +150,7 @@ object PermissionHelper {
when {
permission.granted -> {
// 获得存储权限后刷新 gid 避免下载仍需实名
(ARouter.getInstance().build(RouteConsts.provider.app)
.navigation() as? IAppProvider)?.refreshGid()
TheRouter.get(IAppProvider::class.java)?.refreshGid()
// 延迟 100ms 确保能够正常获取到 gid
AppExecutor.uiExecutor.executeWithDelay({
@ -502,8 +501,7 @@ object PermissionHelper {
uiModificationCallback = {
it.hintTv.setTextColor(ContextCompat.getColor(context, R.color.text_theme))
it.hintTv.setOnClickListener {
val provider =
ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
val provider = TheRouter.get(IDirectProvider::class.java)
provider?.directToWebView(context, Constants.PERMISSION_SCENARIO_ADDRESS, "(权限弹窗)")
}
it.contentTv.setTextColor(ContextCompat.getColor(context, R.color.text_primary))

View File

@ -1,7 +1,7 @@
package com.gh.gamecenter.common.utils
import android.app.Application
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.entity.SensorsEvent
@ -306,7 +306,7 @@ object SensorsBridge {
private var mIsSensorsEnabled = false
private val mSensor by lazy {
ARouter.getInstance().build(RouteConsts.provider.sensors).navigation() as? ISensorsProvider
TheRouter.get(ISensorsProvider::class.java)
}
@JvmStatic

View File

@ -24,7 +24,7 @@ import android.widget.TextView;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.therouter.TheRouter;
import com.gh.gamecenter.common.R;
import com.gh.gamecenter.common.callback.BiCallback;
import com.gh.gamecenter.common.constant.EntranceConsts;
@ -144,7 +144,7 @@ public class ShareUtils {
private Context mContext; // application context
//QQ或者QQ空间分享回调处理
private IAppProvider mAppProvider = (IAppProvider) ARouter.getInstance().build(RouteConsts.provider.app).navigation();
private IAppProvider mAppProvider = TheRouter.get(IAppProvider.class);
public IUiListener QqShareListener = new IUiListener() {
@Override
@ -245,7 +245,7 @@ public class ShareUtils {
};
private ShareUtils(Context context) {
IConfigProvider configProvider = (IConfigProvider) ARouter.getInstance().build(RouteConsts.provider.config).navigation();
IConfigProvider configProvider = TheRouter.get(IConfigProvider.class);
Tencent.setIsPermissionGranted(true);
mContext = context.getApplicationContext();
@ -262,7 +262,7 @@ public class ShareUtils {
//检查是否安装手机QQ
public static boolean isQQClientAvailable(Context context) {
IPackageUtilsProvider packageUtilsImpl = (IPackageUtilsProvider) ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation();
IPackageUtilsProvider packageUtilsImpl = TheRouter.get(IPackageUtilsProvider.class);
return packageUtilsImpl.isInstalledWithLauncherIcon(context, "com.tencent.mobileqq")
|| packageUtilsImpl.isInstalledWithLauncherIcon(context, "com.tencent.tim");
@ -865,7 +865,7 @@ public class ShareUtils {
}
Activity activity = mActivity.get();
if (activity != null) {
ARouter.getInstance().build(RouteConsts.activity.weiBoShareActivity)
TheRouter.build(RouteConsts.activity.weiBoShareActivity)
.withString(EntranceConsts.KET_SHARE_STYLE, "NORMAL")
.withString(EntranceConsts.KET_TITLE, mTitle)
.withString(EntranceConsts.KET_SHAREICON, shareIcon)

View File

@ -13,7 +13,7 @@ import android.widget.EditText
import android.widget.TextView
import androidx.annotation.ColorRes
import androidx.core.content.ContextCompat
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.HaloApp
import com.gh.gamecenter.common.R
import com.gh.gamecenter.common.callback.SimpleCallback
@ -350,10 +350,7 @@ object TextHelper {
override fun onCallback(arg: String) {
val pattern = Pattern.compile(PROTOCOL_ADDRESS_REGEX)
if (pattern.matcher(arg).find()) {
val directUtils = ARouter
.getInstance()
.build(RouteConsts.provider.directUtils)
.navigation() as? IDirectProvider
val directUtils = TheRouter.get(IDirectProvider::class.java)
directUtils?.directToWebView(context, arg, entrance)
} else {
val application = HaloApp.getInstance()

View File

@ -1,7 +1,7 @@
package com.gh.gamecenter.common.utils
import androidx.collection.arrayMapOf
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.BuildConfig
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.core.provider.IAppProvider
@ -80,12 +80,12 @@ object TimestampUtils {
}
val appProvider =
ARouter.getInstance().build(RouteConsts.provider.app).navigation() as IAppProvider
TheRouter.get(IAppProvider::class.java)
if (url.isBlank()) return url
// 测试环境直接添加时间戳
return if (BuildConfig.DEBUG || appProvider.getChannel().lowercase().contains("refresh")) {
return if (BuildConfig.DEBUG || appProvider?.getChannel()?.lowercase()?.contains("refresh") == true) {
getCurrentTimeStampUrl(url)
} else {
getCDTimeStampUrl(url)

View File

@ -9,7 +9,7 @@ import android.view.MotionEvent
import android.view.ViewGroup
import android.view.ViewParent
import android.widget.TextView
import com.alibaba.android.arouter.launcher.ARouter
import com.therouter.TheRouter
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.core.provider.IDefaultUrlHandlerProvider
@ -36,8 +36,7 @@ class UrlInterceptedLinkMovementMethod : LinkMovementMethod() {
val link = links[0]
if (action == MotionEvent.ACTION_UP) {
if (link is URLSpan && link.url.contains("ghzhushou")) {
val provider = ARouter.getInstance().build(RouteConsts.provider.defaultUrlHandler)
.navigation() as? IDefaultUrlHandlerProvider
val provider = TheRouter.get(IDefaultUrlHandlerProvider::class.java)
provider?.interceptUrl(widget.context, link.url, "")
} else {
link.onClick(widget)