diff --git a/app/build.gradle b/app/build.gradle
index 02005d693e..4d48864bb1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -268,6 +268,9 @@ dependencies {
implementation(project(':module_login')) {
exclude group: 'androidx.swiperefreshlayout'
}
+ implementation(project(':module_setting')) {
+ exclude group: 'androidx.swiperefreshlayout'
+ }
// 默认不接入光能模块,提高编译速度
// debugImplementation(project(':module_energy')) {
// exclude group: 'androidx.swiperefreshlayout'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8b7fa1f0ea..05325f2057 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -148,10 +148,6 @@
android:name="com.gh.gamecenter.NewsDetailActivity"
android:screenOrientation="portrait" />
-
-
@@ -219,18 +215,6 @@
android:name="com.gh.gamecenter.SelectUserIconActivity"
android:screenOrientation="portrait" />
-
-
-
-
-
-
-
-
@@ -586,14 +566,6 @@
android:name=".qa.video.publish.VideoPublishActivity"
android:screenOrientation="portrait" />
-
-
-
-
diff --git a/app/src/main/java/com/gh/common/DefaultJsApi.kt b/app/src/main/java/com/gh/common/DefaultJsApi.kt
index de1a8ef4de..b4adb20d7d 100644
--- a/app/src/main/java/com/gh/common/DefaultJsApi.kt
+++ b/app/src/main/java/com/gh/common/DefaultJsApi.kt
@@ -10,7 +10,9 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.FragmentActivity
import com.gh.common.util.*
import com.gh.common.util.LogUtils
-import com.gh.gamecenter.*
+import com.gh.gamecenter.BuildConfig
+import com.gh.gamecenter.ImageViewerActivity
+import com.gh.gamecenter.WebActivity
import com.gh.gamecenter.common.callback.BiCallback
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.entity.NotificationUgc
@@ -30,13 +32,14 @@ import com.gh.gamecenter.entity.MtaEvent
import com.gh.gamecenter.help.QaFeedbackDialogFragment
import com.gh.gamecenter.login.entity.Badge
import com.gh.gamecenter.login.user.LoginTag
-import com.gh.gamecenter.login.view.LoginActivity
import com.gh.gamecenter.login.user.UserManager
-import com.gh.gamecenter.personalhome.border.AvatarBorderActivity
-import com.gh.gamecenter.security.BindPhoneActivity
import com.gh.gamecenter.login.user.UserRepository
import com.gh.gamecenter.login.utils.LoginHelper
import com.gh.gamecenter.login.utils.QuickLoginHelper
+import com.gh.gamecenter.login.view.LoginActivity
+import com.gh.gamecenter.personalhome.border.AvatarBorderActivity
+import com.gh.gamecenter.setting.view.AboutActivity
+import com.gh.gamecenter.setting.view.security.BindPhoneActivity
import com.halo.assistant.HaloApp
import com.lightgame.utils.Utils
import org.json.JSONObject
diff --git a/app/src/main/java/com/gh/common/constant/Config.java b/app/src/main/java/com/gh/common/constant/Config.java
index e019ae0198..24b6138c93 100644
--- a/app/src/main/java/com/gh/common/constant/Config.java
+++ b/app/src/main/java/com/gh/common/constant/Config.java
@@ -309,26 +309,6 @@ public class Config {
return mDefaultSharedPreferences;
}
- public static boolean isExistHideFunction() {
- SharedPreferences preferences = getPreferences();
- if (!preferences.getBoolean(FIX_DOWNLOAD_KEY, false)) return true;
- if (!preferences.getBoolean(FIX_PLUGIN_KEY, false)) return true;
- if (!preferences.getBoolean(FIX_COMMUNITY_KEY, false)) return true;
- if (!preferences.getBoolean(FIX_ARTICLE_KEY, false)) return true;
- return false;
- }
-
- public static void fixHideFunction() {
- SharedPreferences preferences = PreferenceManager.
- getDefaultSharedPreferences(HaloApp.getInstance().getApplication());
- SharedPreferences.Editor editor = preferences.edit();
- editor.putBoolean(Config.FIX_DOWNLOAD_KEY, true);
- editor.putBoolean(Config.FIX_ARTICLE_KEY, true);
- editor.putBoolean(Config.FIX_COMMUNITY_KEY, true);
- editor.putBoolean(Config.FIX_PLUGIN_KEY, true);
- editor.apply();
- }
-
@SuppressLint("CheckResult")
public static void getGhzsSettings() {
String channel = HaloApp.getInstance().getChannel();
diff --git a/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt b/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt
index 374243547c..92bcfaf99d 100644
--- a/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt
+++ b/app/src/main/java/com/gh/common/dialog/DeviceRemindDialog.kt
@@ -29,8 +29,8 @@ import com.gh.gamecenter.common.utils.ImageUtils
import com.gh.gamecenter.databinding.DialogDeviceRemindBinding
import com.gh.gamecenter.entity.DeviceDialogEntity
import com.gh.gamecenter.entity.GameEntity
+import com.gh.gamecenter.setting.view.GameDownloadSettingFragment
import com.google.gson.reflect.TypeToken
-import com.gh.gamecenter.setting.GameDownloadSettingFragment.Companion.AUTO_INSTALL_SP_KEY
import com.lightgame.download.DataWatcher
import com.lightgame.download.DownloadEntity
import com.lightgame.download.DownloadStatus
@@ -53,7 +53,7 @@ class DeviceRemindDialog(context: Context, val entity: DeviceDialogEntity, val g
private val dataWatcher = object : DataWatcher() {
override fun onDataChanged(downloadEntity: DownloadEntity) {
if (downloadEntity.status == DownloadStatus.done && downloadEntity.name == gameEntity.name) {
- val autoInstall = SPUtils.getBoolean(AUTO_INSTALL_SP_KEY, true)
+ val autoInstall = SPUtils.getBoolean(GameDownloadSettingFragment.AUTO_INSTALL_SP_KEY, true)
if (autoInstall) {
dismiss()
}
diff --git a/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt b/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt
index f6ca5c27ab..26ba0462c6 100644
--- a/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt
+++ b/app/src/main/java/com/gh/common/provider/AppProviderImpl.kt
@@ -33,6 +33,10 @@ class AppProviderImpl : IAppProvider {
return HaloApp.getInstance().channel ?: ""
}
+ override fun setChannel(channel: String) {
+ HaloApp.getInstance().channel = channel
+ }
+
override fun getUserAgent(): String {
return HaloApp.getInstance().userAgent ?: ""
}
diff --git a/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt
new file mode 100644
index 0000000000..fd017ab719
--- /dev/null
+++ b/app/src/main/java/com/gh/common/provider/BrowserInstallHelperProviderImpl.kt
@@ -0,0 +1,23 @@
+package com.gh.common.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.download.server.BrowserInstallHelper
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IBrowserInstallHelperProvider
+
+@Route(path = RouteConsts.provider.browserInstallHelper, name = "BrowserInstallHelper暴露服务")
+class BrowserInstallHelperProviderImpl : IBrowserInstallHelperProvider {
+ override fun isUseBrowserToInstallEnabled(): Boolean = BrowserInstallHelper.isUseBrowserToInstallEnabled()
+
+ override fun shouldUseBrowserToInstall(): Boolean = BrowserInstallHelper.shouldUseBrowserToInstall()
+
+ override fun logSwitchInstallSettingEvent() {
+ BrowserInstallHelper.logOrdinaryBrowserEvent(BrowserInstallHelper.Type.SWITCH_INSTALL_SETTING)
+ }
+
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt
index 01429e9536..db029864cb 100644
--- a/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt
+++ b/app/src/main/java/com/gh/common/provider/ConfigProviderImpl.kt
@@ -72,6 +72,10 @@ class ConfigProviderImpl : IConfigProvider {
return Config.WEIBO_APPKEY
}
+ override fun getNightModeSetting(): Boolean {
+ return Config.getNightModeSetting()?.setting ?: false
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt
index 0877c2c0ed..b05d17c448 100644
--- a/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt
+++ b/app/src/main/java/com/gh/common/provider/DialogUtilsProviderImpl.kt
@@ -1,5 +1,6 @@
package com.gh.common.provider
+import android.app.Dialog
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.gh.common.util.DialogUtils
@@ -22,6 +23,46 @@ class DialogUtilsProviderImpl : IDialogUtilsProvider {
})
}
+ override fun showWaitDialog(context: Context, string: String): Dialog = DialogUtils.showWaitDialog(context, string)
+
+ override fun showForceDialog(
+ context: Context,
+ title: String,
+ message: CharSequence,
+ positive: String,
+ negative: String,
+ confirm: () -> Unit,
+ cancel: () -> Unit
+ ) {
+ DialogUtils.showForceDialog(context, title, message, positive, negative,
+ { confirm.invoke() }, object :CancelListener{
+ override fun onCancel() {
+ cancel.invoke()
+ }
+ })
+ }
+
+ override fun showUsageStatsDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) {
+ DialogUtils.showUsageStatsDialog(context,
+ { confirm.invoke() }, object :CancelListener{
+ override fun onCancel() {
+ cancel.invoke()
+ }
+ })
+ }
+
+ override fun showNoticeDialog(
+ context: Context,
+ title: String,
+ content: String,
+ confirm: () -> Unit
+ ) {
+ DialogUtils.showNoticeDialog(context, title, content
+ ) { confirm.invoke() }
+ }
+
+ override fun showBindPhoneDialog(context: Context, confirm: () -> Unit): Dialog = DialogUtils.showBindPhoneDialog(context) { confirm.invoke() }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt b/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt
index ea27204487..9a860a3924 100644
--- a/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt
+++ b/app/src/main/java/com/gh/common/provider/DirectProviderImpl.kt
@@ -49,6 +49,14 @@ class DirectProviderImpl : IDirectProvider {
DirectUtils.directToLotteryParadisePage(context)
}
+ override fun directDouyin(context: Context, userId: String) {
+ DirectUtils.directDouyin(context, userId)
+ }
+
+ override fun directToSuggestionFromDiagnosis(context: Context, diagnosis: String) {
+ DirectUtils.directToSuggestion(context, diagnosis = diagnosis)
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt
new file mode 100644
index 0000000000..594b435254
--- /dev/null
+++ b/app/src/main/java/com/gh/common/provider/HistoryHelperProviderImpl.kt
@@ -0,0 +1,18 @@
+package com.gh.common.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.common.history.HistoryHelper
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IHistoryHelperProvider
+
+@Route(path = RouteConsts.provider.historyHelper, name = "HistoryHelper暴露服务")
+class HistoryHelperProviderImpl : IHistoryHelperProvider {
+ override fun emptyDatabase() {
+ HistoryHelper.emptyDatabase()
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/provider/MainProviderImpl.kt b/app/src/main/java/com/gh/common/provider/MainProviderImpl.kt
new file mode 100644
index 0000000000..91c1a5495b
--- /dev/null
+++ b/app/src/main/java/com/gh/common/provider/MainProviderImpl.kt
@@ -0,0 +1,20 @@
+package com.gh.common.provider
+
+import android.content.Context
+import android.content.Intent
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.MainActivity
+import com.gh.gamecenter.WebActivity
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IMainProvider
+
+@Route(path = RouteConsts.provider.mainActivity, name = "MainActivity暴露服务")
+class MainProviderImpl : IMainProvider {
+ override fun skipToMainActivity(context: Context, position: Int) {
+ MainActivity.skipToMainActivity(context, position)
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt b/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt
new file mode 100644
index 0000000000..1bb22173d2
--- /dev/null
+++ b/app/src/main/java/com/gh/common/provider/ShellProviderImpl.kt
@@ -0,0 +1,19 @@
+package com.gh.common.provider
+
+import android.content.Context
+import android.content.Intent
+import android.os.Parcelable
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.ShellActivity
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IShellProvider
+
+@Route(path = RouteConsts.provider.shellActivity, name = "ShellActivity暴露服务")
+class ShellProviderImpl : IShellProvider {
+ override fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent =
+ ShellActivity.getIntent(context, ShellActivity.Type.SWITCH_INSTALL_METHOD, extraParcelable)
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt b/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt
new file mode 100644
index 0000000000..c000db44c4
--- /dev/null
+++ b/app/src/main/java/com/gh/common/provider/UpdateManagerProviderImpl.kt
@@ -0,0 +1,19 @@
+package com.gh.common.provider
+
+import android.content.Context
+import android.os.Handler
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IUpdateManagerProvider
+import com.gh.gamecenter.manager.UpdateManager
+
+@Route(path = RouteConsts.provider.updateManager, name = "UpdateManager暴露服务")
+class UpdateManagerProviderImpl: IUpdateManagerProvider {
+ override fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler) {
+ UpdateManager.getInstance(context).checkUpdate(isAutoCheck, handler)
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt
new file mode 100644
index 0000000000..ca54e6eb37
--- /dev/null
+++ b/app/src/main/java/com/gh/common/provider/UsageStatsHelperProviderImpl.kt
@@ -0,0 +1,23 @@
+package com.gh.common.provider
+
+import android.content.Context
+import android.os.Build
+import androidx.annotation.RequiresApi
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.common.util.UsageStatsHelper
+import com.gh.common.util.WechatBindHelper
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IUsageStatsHelperProvider
+
+@Route(path = RouteConsts.provider.usageStatsHelper, name = "UsageStatsHelper暴露服务")
+class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider {
+ @RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1)
+ override fun checkForPermission(): Boolean = UsageStatsHelper.checkForPermission()
+ override fun skipToUsageStats(context: Context, requestCode: Int) {
+ UsageStatsHelper.skipToUsageStats(context, requestCode)
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt b/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt
index cea0b172b1..7d72dd50d5 100644
--- a/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt
+++ b/app/src/main/java/com/gh/common/provider/WebProviderImpl.kt
@@ -17,6 +17,14 @@ class WebProviderImpl : IWebProvider {
return WebActivity.getWebIntent(context, title, url)
}
+ override fun getBindWechatIntent(context: Context): Intent {
+ return WebActivity.getBindWechatIntent(context)
+ }
+
+ override fun getSecurityCertificationIntent(context: Context): Intent {
+ return WebActivity.getSecurityCertificationIntent(context)
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt b/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt
index c1f70ee124..d594b52248 100644
--- a/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt
+++ b/app/src/main/java/com/gh/common/provider/WechatHelperProviderImpl.kt
@@ -8,8 +8,10 @@ import com.gh.gamecenter.core.provider.IWechatBindHelperProvider
@Route(path = RouteConsts.provider.wechatHelper, name = "WechatHelper暴露服务")
class WechatHelperProviderImpl : IWechatBindHelperProvider {
- override fun getWechatConfig() {
- WechatBindHelper.getWechatConfig()
+ override fun getWechatConfig(callback: (() -> Unit)?) {
+ WechatBindHelper.getWechatConfig {
+ callback?.invoke()
+ }
}
override fun init(context: Context?) {
diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java
index 5140f7d833..12c531c614 100644
--- a/app/src/main/java/com/gh/common/util/DialogUtils.java
+++ b/app/src/main/java/com/gh/common/util/DialogUtils.java
@@ -93,8 +93,8 @@ import com.gh.gamecenter.entity.SettingsEntity;
import com.gh.gamecenter.entity.SimpleGameEntity;
import com.gh.gamecenter.entity.TrackableEntity;
import com.gh.gamecenter.login.entity.Badge;
-import com.gh.gamecenter.security.BindPhoneActivity;
-import com.gh.gamecenter.setting.GameDownloadSettingFragment;
+import com.gh.gamecenter.setting.view.security.BindPhoneActivity;
+import com.gh.gamecenter.setting.view.GameDownloadSettingFragment;
import com.gh.gamecenter.suggest.SuggestType;
import com.lightgame.adapter.BaseRecyclerAdapter;
import com.lightgame.download.DownloadEntity;
diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt
index 22499a596a..c950d23216 100644
--- a/app/src/main/java/com/gh/common/util/DirectUtils.kt
+++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt
@@ -9,31 +9,31 @@ import android.os.Build
import android.os.Bundle
import android.text.TextUtils
import androidx.appcompat.app.AppCompatActivity
-import com.gh.gamecenter.common.base.activity.BaseActivity
-import com.gh.gamecenter.common.base.activity.BaseActivity_TabLayout
-import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout
-import com.gh.gamecenter.core.AppExecutor
import com.gh.common.constant.Config
-import com.gh.gamecenter.common.constant.Constants
import com.gh.common.exposure.ExposureEvent
import com.gh.common.exposure.ExposureEvent.Companion.createEvent
import com.gh.common.exposure.ExposureManager.log
import com.gh.common.exposure.ExposureTraceUtils.appendTrace
import com.gh.common.exposure.ExposureType
-import com.gh.gamecenter.common.constant.EntranceConsts.*
-import com.gh.common.util.EntranceUtils.*
+import com.gh.common.util.EntranceUtils.jumpActivity
import com.gh.gamecenter.*
import com.gh.gamecenter.amway.AmwayActivity
import com.gh.gamecenter.catalog.CatalogActivity
import com.gh.gamecenter.category.CategoryDirectoryActivity
import com.gh.gamecenter.category2.CategoryV2Activity
+import com.gh.gamecenter.common.base.activity.BaseActivity
+import com.gh.gamecenter.common.base.activity.BaseActivity_TabLayout
+import com.gh.gamecenter.common.base.activity.ToolBarActivity
+import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout
+import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.EntranceConsts.*
import com.gh.gamecenter.common.entity.CommunityEntity
import com.gh.gamecenter.common.entity.Display
import com.gh.gamecenter.common.entity.LinkEntity
import com.gh.gamecenter.common.retrofit.Response
import com.gh.gamecenter.common.utils.*
+import com.gh.gamecenter.core.AppExecutor
import com.gh.gamecenter.core.utils.ToastUtils
import com.gh.gamecenter.discovery.DiscoveryActivity
import com.gh.gamecenter.download.DownloadFragment.Companion.INDEX_UPDATE
@@ -63,9 +63,10 @@ import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity
import com.gh.gamecenter.qa.subject.CommunitySubjectActivity
import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity
import com.gh.gamecenter.retrofit.RetrofitManager
-import com.gh.gamecenter.security.BindPhoneActivity
import com.gh.gamecenter.servers.GameServerTestActivity
import com.gh.gamecenter.servers.GameServersActivity
+import com.gh.gamecenter.setting.view.security.BindPhoneActivity
+import com.gh.gamecenter.setting.view.SettingActivity
import com.gh.gamecenter.subject.SubjectActivity
import com.gh.gamecenter.suggest.SuggestType
import com.gh.gamecenter.tag.TagsActivity
diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt
index e21841dd47..95dc77293c 100644
--- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt
+++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt
@@ -23,7 +23,7 @@ import com.gh.gamecenter.entity.SimpleGameEntity
import com.gh.gamecenter.entity.SimulatorEntity
import com.gh.gamecenter.eventbus.EBDownloadStatus
import com.gh.gamecenter.retrofit.RetrofitManager
-import com.gh.gamecenter.setting.GameDownloadSettingFragment
+import com.gh.gamecenter.setting.view.GameDownloadSettingFragment
import com.gh.gamecenter.suggest.SuggestType
import com.gh.vspace.VHelper
import com.halo.assistant.HaloApp
diff --git a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt
index 810efdfb15..9462e4886f 100644
--- a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt
+++ b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt
@@ -461,17 +461,6 @@ object NewFlatLogUtils {
log(json, "event", false)
}
- //设置点击深色模式跟随系统切换开关
- @JvmStatic
- fun logHaloSelfNightModeOsSwitch(isOn: Boolean) {
- val json = json {
- "event" to "halo_self_night_mode_os_switch"
- "is_on" to isOn
- parseAndPutMeta().invoke(this)
- }
- log(json, "event", false)
- }
-
//触发关闭深色模式跟随系统切换弹窗
@JvmStatic
fun logHaloSelfNightModeOsDialog(buttonText: String) {
diff --git a/app/src/main/java/com/gh/common/util/NewLogUtils.kt b/app/src/main/java/com/gh/common/util/NewLogUtils.kt
index 144556efb5..218248115b 100644
--- a/app/src/main/java/com/gh/common/util/NewLogUtils.kt
+++ b/app/src/main/java/com/gh/common/util/NewLogUtils.kt
@@ -1896,20 +1896,6 @@ object NewLogUtils {
log(json, "appointment", false)
}
- //点击微信提醒
- @JvmStatic
- fun logWechatRemindConfigClick(wechatConfigEntity: WechatConfigEntity) {
- val json = json {
- "event" to "appointment_wechat_remind_config_click"
- "wechat_is_bind" to wechatConfigEntity.bind
- "wechat_is_follow" to wechatConfigEntity.follow
- "wechat_is_remind" to wechatConfigEntity.notice
- "timestamp" to System.currentTimeMillis() / 1000
- parseAndPutMeta().invoke(this)
- }
- log(json, "appointment", false)
- }
-
//选择图片上传方式
@JvmStatic
fun logShowGameCollectionCoverTypeDialog() {
diff --git a/app/src/main/java/com/gh/download/PackageObserver.kt b/app/src/main/java/com/gh/download/PackageObserver.kt
index dc76fe4746..f6d7e8da44 100644
--- a/app/src/main/java/com/gh/download/PackageObserver.kt
+++ b/app/src/main/java/com/gh/download/PackageObserver.kt
@@ -22,7 +22,7 @@ import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.packagehelper.PackageRepository
import com.gh.gamecenter.packagehelper.PackageViewModel
import com.gh.gamecenter.retrofit.RetrofitManager
-import com.gh.gamecenter.setting.GameDownloadSettingFragment.Companion.CONCERN_GAME_SP_KEY
+import com.gh.gamecenter.setting.view.GameDownloadSettingFragment
import com.halo.assistant.HaloApp
import com.lightgame.download.DownloadEntity
import com.lightgame.download.FileUtils
@@ -109,7 +109,7 @@ object PackageObserver {
DownloadManager.getInstance().cancel(mDownloadEntity.url, false, true, false)
- if (SPUtils.getBoolean(CONCERN_GAME_SP_KEY, true)) { //设置页面控制是否安装后自动关注
+ if (SPUtils.getBoolean(GameDownloadSettingFragment.CONCERN_GAME_SP_KEY, true)) { //设置页面控制是否安装后自动关注
// 安装后关注游戏
val finalDownloadEntity = mDownloadEntity
RetrofitManager.getInstance().api
diff --git a/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java b/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java
index 60b6aa7f17..a3aa19d053 100644
--- a/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/CleanApkActivity.java
@@ -6,13 +6,16 @@ import android.os.Bundle;
import androidx.annotation.NonNull;
+import com.alibaba.android.arouter.facade.annotation.Route;
import com.gh.gamecenter.common.base.activity.ToolBarActivity;
import com.gh.gamecenter.common.constant.EntranceConsts;
+import com.gh.gamecenter.common.constant.RouteConsts;
import com.halo.assistant.fragment.ApkCleanerFragment;
/**
* Created by khy on 2017/1/24.
*/
+@Route(path = RouteConsts.activity.cleanApkActivity)
public class CleanApkActivity extends ToolBarActivity {
@NonNull
diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java
index 6fefc022e6..222f64a7e6 100644
--- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java
@@ -59,7 +59,7 @@ import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.common.eventbus.EBReuse;
import com.gh.gamecenter.newsdetail.NewsDetailAdapter;
import com.gh.gamecenter.retrofit.RetrofitManager;
-import com.halo.assistant.fragment.SettingsFragment;
+import com.gh.gamecenter.setting.view.SettingsFragment;
import com.lightgame.download.DataWatcher;
import com.lightgame.download.DownloadEntity;
import com.lightgame.utils.Utils;
diff --git a/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt b/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt
index c6872e1965..128aa0bf76 100644
--- a/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt
+++ b/app/src/main/java/com/gh/gamecenter/forum/home/ForumScrollCalculatorHelper.kt
@@ -7,12 +7,12 @@ import android.text.TextUtils
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.gh.gamecenter.common.constant.Constants
-import com.gh.gamecenter.core.utils.MD5Utils
import com.gh.gamecenter.common.utils.NetworkUtils
-import com.gh.gamecenter.core.utils.SPUtils
import com.gh.gamecenter.common.utils.safelyGetInRelease
+import com.gh.gamecenter.core.utils.MD5Utils
+import com.gh.gamecenter.core.utils.SPUtils
import com.gh.gamecenter.entity.ForumVideoEntity
-import com.gh.gamecenter.setting.VideoSettingFragment
+import com.gh.gamecenter.setting.view.VideoSettingFragment
import com.gh.gamecenter.video.detail.CustomManager
import com.halo.assistant.HaloApp
import com.shuyu.gsyvideoplayer.video.base.GSYBaseVideoPlayer
diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt
index 5eaf5711a2..2eddba5902 100644
--- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt
@@ -18,6 +18,7 @@ import com.gh.common.exposure.ExposureType
import com.gh.common.exposure.IExposable
import com.gh.common.util.*
import com.gh.common.util.LogUtils
+import com.gh.common.util.NewFlatLogUtils
import com.gh.common.util.NewLogUtils
import com.gh.gamecenter.BlockActivity
import com.gh.gamecenter.GameDetailActivity
diff --git a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt
index 5578aafe4e..d99c9ae68d 100644
--- a/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt
+++ b/app/src/main/java/com/gh/gamecenter/game/GameViewModel.kt
@@ -31,7 +31,7 @@ import com.gh.gamecenter.game.rank.RankCollectionAdapter
import com.gh.gamecenter.gamecollection.square.GameCollectionListItemData
import com.gh.gamecenter.home.BlankDividerViewHolder
import com.gh.gamecenter.retrofit.RetrofitManager
-import com.halo.assistant.fragment.SettingsFragment
+import com.gh.gamecenter.setting.view.SettingsFragment
import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
diff --git a/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt b/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt
index e6375e88b6..ac6ce4e4cc 100644
--- a/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt
+++ b/app/src/main/java/com/gh/gamecenter/game/upload/GameSubmissionActivity.kt
@@ -3,15 +3,18 @@ package com.gh.gamecenter.game.upload
import android.content.Context
import android.content.Intent
import android.os.Bundle
-import com.gh.gamecenter.common.base.activity.ToolBarActivity
+import com.alibaba.android.arouter.facade.annotation.Route
import com.gh.gamecenter.R
import com.gh.gamecenter.common.base.activity.BaseActivity
+import com.gh.gamecenter.common.base.activity.ToolBarActivity
import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.utils.updateStatusBarColor
/**
* 游戏投稿
*/
+@Route(path = RouteConsts.activity.gameSubmissionActivity)
class GameSubmissionActivity : ToolBarActivity() {
companion object {
@JvmStatic
diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt
index 10ec68e884..7747159edc 100644
--- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt
@@ -44,12 +44,12 @@ import com.gh.gamecenter.eventbus.EBUserFollow
import com.gh.gamecenter.gamedetail.GameDetailFragment
import com.gh.gamecenter.home.video.ScrollCalculatorHelper
import com.gh.gamecenter.login.user.UserManager
+import com.gh.gamecenter.login.user.UserViewModel
import com.gh.gamecenter.qa.article.detail.CommentItemData
import com.gh.gamecenter.qa.comment.CommentActivity
import com.gh.gamecenter.qa.comment.base.BaseCommentAdapter
import com.gh.gamecenter.qa.comment.base.BaseCommentViewModel
-import com.gh.gamecenter.setting.VideoSettingFragment
-import com.gh.gamecenter.login.user.UserViewModel
+import com.gh.gamecenter.setting.view.VideoSettingFragment
import com.gh.gamecenter.video.detail.CustomManager
import com.google.android.material.appbar.AppBarLayout
import com.halo.assistant.HaloApp
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt
index e6b3224f9b..f87b78aa6e 100644
--- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt
@@ -40,6 +40,7 @@ import com.gh.common.simulator.SimulatorGameManager
import com.gh.common.util.*
import com.gh.common.util.DialogUtils
import com.gh.common.util.LogUtils
+import com.gh.common.util.NewFlatLogUtils
import com.gh.common.util.NewLogUtils
import com.gh.common.view.FlexLinearLayout
import com.gh.common.xapk.XapkInstaller
@@ -75,7 +76,7 @@ import com.gh.gamecenter.gamedetail.video.TopVideoView
import com.gh.gamecenter.home.video.ScrollCalculatorHelper
import com.gh.gamecenter.login.user.UserViewModel
import com.gh.gamecenter.packagehelper.PackageViewModel
-import com.gh.gamecenter.setting.VideoSettingFragment
+import com.gh.gamecenter.setting.view.VideoSettingFragment
import com.gh.gamecenter.simulatorgame.SimulatorGameActivity
import com.gh.gamecenter.tag.TagsActivity
import com.gh.gamecenter.video.detail.CustomManager
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt
index 4ead9cde4e..45e177eaf3 100644
--- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/DescAdapter.kt
@@ -29,6 +29,7 @@ import com.gh.common.exposure.ExposureSource
import com.gh.common.util.*
import com.gh.common.util.DialogUtils
import com.gh.common.util.LogUtils
+import com.gh.common.util.NewFlatLogUtils
import com.gh.common.util.NewLogUtils
import com.gh.gamecenter.GameNewsActivity
import com.gh.gamecenter.R
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt
index 7a8dd8893e..1e734fe178 100644
--- a/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/gamedetail/desc/GameGalleryAdapter.kt
@@ -9,6 +9,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.facebook.drawee.view.SimpleDraweeView
import com.gh.gamecenter.common.base.BaseRecyclerViewHolder
import com.gh.common.util.*
+import com.gh.common.util.NewFlatLogUtils
import com.gh.gamecenter.common.view.WrapContentDraweeView
import com.gh.gamecenter.ImageViewerActivity
import com.gh.gamecenter.R
diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt
index b35e454d81..3039fac3a6 100644
--- a/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/home/HomeFragmentAdapter.kt
@@ -11,7 +11,6 @@ import com.gh.common.exposure.ExposureSource
import com.gh.common.exposure.IExposable
import com.gh.common.util.DirectUtils
import com.gh.common.util.NewLogUtils
-import com.gh.gamecenter.AboutActivity
import com.gh.gamecenter.GameDetailActivity
import com.gh.gamecenter.R
import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder
@@ -36,6 +35,7 @@ import com.gh.gamecenter.home.amway.HomeAmwayListViewHolder
import com.gh.gamecenter.home.gamecollection.HomeGameCollectionViewHolder
import com.gh.gamecenter.home.slide.HomeSlideListAdapter
import com.gh.gamecenter.home.slide.HomeSlideListViewHolder
+import com.gh.gamecenter.setting.view.AboutActivity
import com.gh.vspace.HomeRecentVGameAdapter
import com.gh.vspace.HomeRecentVGameViewHolder
import com.gh.vspace.VHelper
diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt
index 3ebdf3f2c5..7223fd2a52 100644
--- a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt
+++ b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt
@@ -26,10 +26,10 @@ import com.gh.gamecenter.game.rank.RankCollectionAdapter
import com.gh.gamecenter.gamecollection.square.GameCollectionListItemData
import com.gh.gamecenter.packagehelper.PackageRepository
import com.gh.gamecenter.retrofit.RetrofitManager
+import com.gh.gamecenter.setting.view.SettingsFragment
import com.gh.vspace.VGameItemData
import com.gh.vspace.VHelper
import com.halo.assistant.HaloApp
-import com.halo.assistant.fragment.SettingsFragment
import com.lightgame.download.DownloadEntity
import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
diff --git a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt
index b48374cb46..8794af7104 100644
--- a/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/home/slide/HomeSlideListAdapter.kt
@@ -10,18 +10,18 @@ import androidx.recyclerview.widget.RecyclerView
import com.gh.common.databind.BindingAdapters
import com.gh.common.exposure.ExposureEvent
import com.gh.common.exposure.ExposureSource
-import com.gh.gamecenter.core.runOnIoThread
-import com.gh.common.util.*
-import com.gh.gamecenter.AboutActivity
+import com.gh.common.util.DirectUtils
import com.gh.gamecenter.GameDetailActivity
import com.gh.gamecenter.R
import com.gh.gamecenter.common.utils.DataLogUtils
import com.gh.gamecenter.common.utils.goneIf
+import com.gh.gamecenter.core.runOnIoThread
import com.gh.gamecenter.core.utils.MtaHelper
import com.gh.gamecenter.core.utils.PageSwitchDataHelper
import com.gh.gamecenter.databinding.HomeSlideListItemBinding
import com.gh.gamecenter.entity.HomeSlide
import com.gh.gamecenter.home.HomeItemData
+import com.gh.gamecenter.setting.view.AboutActivity
import com.lightgame.adapter.BaseRecyclerAdapter
import com.lightgame.download.DownloadEntity
import java.lang.ref.WeakReference
diff --git a/app/src/main/java/com/gh/gamecenter/home/video/ScrollCalculatorHelper.kt b/app/src/main/java/com/gh/gamecenter/home/video/ScrollCalculatorHelper.kt
index 7dd6b6573b..8d1a7ad744 100644
--- a/app/src/main/java/com/gh/gamecenter/home/video/ScrollCalculatorHelper.kt
+++ b/app/src/main/java/com/gh/gamecenter/home/video/ScrollCalculatorHelper.kt
@@ -6,10 +6,10 @@ import android.os.Looper
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.gh.gamecenter.common.constant.Constants
-import com.gh.gamecenter.core.utils.MD5Utils
import com.gh.gamecenter.common.utils.NetworkUtils
+import com.gh.gamecenter.core.utils.MD5Utils
import com.gh.gamecenter.core.utils.SPUtils
-import com.gh.gamecenter.setting.VideoSettingFragment
+import com.gh.gamecenter.setting.view.VideoSettingFragment
import com.gh.gamecenter.video.detail.CustomManager
import com.halo.assistant.HaloApp
import com.shuyu.gsyvideoplayer.video.base.GSYBaseVideoPlayer
diff --git a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt
index 2201b3bccd..3138707320 100644
--- a/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/mygame/MyReservationAdapter.kt
@@ -14,6 +14,7 @@ import com.gh.common.exposure.ExposureEvent
import com.gh.common.exposure.ExposureSource
import com.gh.common.exposure.IExposable
import com.gh.common.util.*
+import com.gh.common.util.NewFlatLogUtils
import com.gh.gamecenter.GameDetailActivity
import com.gh.gamecenter.R
import com.gh.gamecenter.common.viewholder.FooterViewHolder
diff --git a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt
index 8bb3860e91..fa6dc7339b 100644
--- a/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/mygame/PlayedGameAdapter.kt
@@ -22,6 +22,7 @@ import com.gh.common.exposure.ExposureSource
import com.gh.common.exposure.IExposable
import com.gh.common.util.*
import com.gh.common.util.DialogUtils
+import com.gh.common.util.NewFlatLogUtils
import com.gh.gamecenter.common.view.BugFixedPopupWindow
import com.gh.gamecenter.common.view.DrawableView
import com.gh.gamecenter.GameDetailActivity
diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java
index 7960f0b093..00d62729f8 100644
--- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java
@@ -74,7 +74,7 @@ import com.gh.gamecenter.entity.NewsDetailEntity;
import com.gh.gamecenter.entity.NewsEntity;
import com.gh.gamecenter.qa.editor.OnLinkClickListener;
import com.gh.gamecenter.retrofit.RetrofitManager;
-import com.halo.assistant.fragment.SettingsFragment;
+import com.gh.gamecenter.setting.view.SettingsFragment;
import com.lightgame.adapter.BaseRecyclerAdapter;
import com.lightgame.utils.Utils;
diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt
index f3358fd1f4..92695a5621 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt
@@ -15,7 +15,7 @@ import com.gh.gamecenter.entity.AddonLinkEntity
import com.gh.gamecenter.game.upload.GameSubmissionActivity
import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.message.MessageUnreadRepository
-import com.gh.gamecenter.security.SecurityActivity
+import com.gh.gamecenter.setting.view.security.SecurityActivity
import com.gh.gamecenter.simulatorgame.SimulatorGameActivity
import com.gh.gamecenter.teenagermode.TeenagerModeActivity
import com.gh.gamecenter.toolbox.ToolBoxBlockActivity
diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt
index 44393d7ef2..f164f15786 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFragment.kt
@@ -16,14 +16,20 @@ import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
import androidx.viewpager2.widget.ViewPager2
+import com.alibaba.android.arouter.launcher.ARouter
import com.gh.common.constant.Config
import com.gh.common.databind.BindingAdapters
import com.gh.common.util.*
import com.gh.common.util.DialogUtils
import com.gh.common.util.LogUtils
+import com.gh.common.util.NewFlatLogUtils
import com.gh.common.util.NewLogUtils
import com.gh.gamecenter.*
+import com.gh.gamecenter.common.base.activity.BaseActivity
+import com.gh.gamecenter.common.base.activity.ToolBarActivity
import com.gh.gamecenter.common.base.fragment.BaseLazyFragment
+import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.eventbus.EBReuse
import com.gh.gamecenter.common.retrofit.ApiResponse
import com.gh.gamecenter.common.utils.*
@@ -50,6 +56,7 @@ import com.gh.gamecenter.mygame.MyGameActivity
import com.gh.gamecenter.mypost.MyPostActivity
import com.gh.gamecenter.personalhome.UserHomeViewModel
import com.gh.gamecenter.room.AppDatabase
+import com.gh.gamecenter.setting.view.SettingActivity
import com.google.android.material.appbar.AppBarLayout
import com.halo.assistant.HaloApp
import com.jakewharton.rxbinding2.view.RxView
diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt
index 5996ba36ea..79f477cfe3 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt
@@ -19,7 +19,7 @@ import com.gh.gamecenter.entity.AddonLinkEntity
import com.gh.gamecenter.game.upload.GameSubmissionActivity
import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.message.MessageUnreadRepository
-import com.gh.gamecenter.security.SecurityActivity
+import com.gh.gamecenter.setting.view.security.SecurityActivity
import com.gh.gamecenter.simulatorgame.SimulatorGameActivity
import com.gh.gamecenter.teenagermode.TeenagerModeActivity
import com.gh.gamecenter.toolbox.ToolBoxBlockActivity
diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt
index a537b9f167..54d63c496d 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt
@@ -20,7 +20,7 @@ import com.gh.gamecenter.entity.AddonLinkEntity
import com.gh.gamecenter.game.upload.GameSubmissionActivity
import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.message.MessageUnreadRepository
-import com.gh.gamecenter.security.SecurityActivity
+import com.gh.gamecenter.setting.view.security.SecurityActivity
import com.gh.gamecenter.simulatorgame.SimulatorGameActivity
import com.gh.gamecenter.teenagermode.TeenagerModeActivity
import com.gh.gamecenter.toolbox.ToolBoxBlockActivity
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryFragment.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryFragment.kt
index 2451180b4d..6188a8aa4b 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/UserHistoryFragment.kt
@@ -9,6 +9,7 @@ import androidx.core.os.bundleOf
import androidx.recyclerview.widget.RecyclerView
import com.gh.gamecenter.core.AppExecutor
import com.gh.common.util.*
+import com.gh.common.util.NewFlatLogUtils
import com.gh.gamecenter.R
import com.gh.gamecenter.common.baselist.ListAdapter
import com.gh.gamecenter.common.baselist.ListFragment
diff --git a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt
index 9318eb9625..a4be8052c3 100644
--- a/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt
+++ b/app/src/main/java/com/gh/gamecenter/personalhome/home/game/UserCommentHistoryAdapter.kt
@@ -10,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.gh.gamecenter.common.base.BaseRecyclerViewHolder
import com.gh.gamecenter.common.constant.ItemViewType
import com.gh.common.util.*
+import com.gh.common.util.NewFlatLogUtils
import com.gh.gamecenter.R
import com.gh.gamecenter.common.viewholder.FooterViewHolder
import com.gh.gamecenter.common.baselist.ListAdapter
diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt
index 2aea6af395..fd824c4d20 100644
--- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt
+++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt
@@ -20,6 +20,7 @@ import com.gh.common.exposure.ExposureEvent
import com.gh.common.exposure.ExposureManager
import com.gh.common.exposure.ExposureSource
import com.gh.common.util.*
+import com.gh.common.util.NewFlatLogUtils
import com.gh.gamecenter.R
import com.gh.gamecenter.common.utils.*
import com.gh.gamecenter.common.view.DrawableView
diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt
index 0fc3ee7daf..d5e78c8cd0 100644
--- a/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt
+++ b/app/src/main/java/com/gh/gamecenter/video/detail/DetailPlayerView.kt
@@ -39,9 +39,9 @@ import com.gh.gamecenter.entity.VideoEntity
import com.gh.gamecenter.eventbus.EBRecommed
import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.qa.comment.CommentActivity
+import com.gh.gamecenter.setting.view.SettingsFragment
import com.gh.gamecenter.video.game.GameVideoActivity
import com.halo.assistant.HaloApp
-import com.halo.assistant.fragment.SettingsFragment
import com.jakewharton.rxbinding2.view.RxView
import com.lightgame.utils.Utils
import com.shuyu.gsyvideoplayer.listener.VideoAllCallBack
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0749006cf3..39f5418162 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -37,7 +37,6 @@
设置
我的游戏
光环用户
- 新版本
请输入搜索关键字
搜索
44.5%
@@ -124,39 +123,15 @@
接收文件需要开启热点 \n 如果出现获取权限的提示,请点击允许
为了避免消耗流量,请关闭你手机的移动网络
从手机相册中选择
- 账号与安全
- 深色模式跟随系统切换
- 视频播放
- 游戏下载
- 一键修复
- 下载完成自动安装游戏
- 安装完成自动关注游戏
- 切换安装方式
- 微信提醒
1.光环助手下载应用后,通过跳转默认浏览器安装已下载的应用(不会重复消耗流量),即可完成免密码安装2.内存较大的游戏在浏览器解压时间较长,需要等待片刻,您也可以通过浏览器的“下载记录”查看解压进度
以上未能解决安装需要密码的,可查看使用教程>
直接使用光环助手下载应用,但%s手机自身安全性检测,下载后需要进行验证账户密码、指纹等解锁后安装
直接使用光环助手下载应用,但部分手机可能存在无法安装的问题
非Wi-Fi环境播放视频提醒
- 非Wi-Fi环境下载游戏提醒
- 非Wi-Fi环境播放首页视频
- 统计游戏时长
- 开启后可以帮你记录玩过每款游戏的时长
- 通知权限
- 开启后你可以及时收到重要通知
- 个性化推荐
- 开启功能后,您在本应用的使用信息(如下载信息),将用于个性化内容推荐,以提升您在本应用的体验
+ 非Wi-Fi环境播放首页视频>
安装完成自动删除安装包
…/GH-KC
- …/gh-files
- …/pictures/ghzhushou
免流量传送接收目录
- 游戏下载目录
- 图片保存目录
- 清除缓存
- 0.0M
- 关于我们
- 关于我们(长按可更改渠道号)
用户协议
隐私政策
安装包清理
@@ -165,11 +140,6 @@
接入第三方SDK目录
权限申请与使用情况说明
儿童隐私保护声明
- 任何网络下都自动播放
- 仅WIFI条件下自动播放
- 关闭自动播放
- 默认静音播放视频
- 开启后以上位置的视频均默认静音播放
1
创建热点
正在创建热点...
@@ -251,7 +221,6 @@
目前还没有评论
没有更多评论啦
加载失败,点击重试
- 关于
发送游戏
安装包清理
选择安装包
@@ -280,7 +249,6 @@
游戏上传
历史版本
我的游戏评论
- Copyright %1$s GHZhuShou Team All Rights Reserved.
资讯
关注
@@ -289,7 +257,6 @@
正在反馈...
下载管理
- 版本更新
个人中心
一键删除(%1$d个,释放%2$s)
保存
@@ -436,7 +403,6 @@
已安装的游戏(%1$d)
收到%1$d个赞
- 已是最新版本
小编回复:%1$s]]>
%1$d票
光环客服
@@ -714,25 +680,6 @@
还有其他问题?
联系客服
账户安全中心
- 跳过
- 绑定手机
- 绑定手机号
- 更换手机号
- 绑定手机后手机号将用于光环助手活动奖励领取、安全验证等用途
- 下一步
- 完成
- 手机号绑定冲突
- 遇到冲突如何换绑
- 1、请先退出当前号【我的光环--设置--退出账号】
- 2、再重新登录冲突号,在【我的光环--账户安全】\n或【我的光环--设置--账户安全】更换手机号
- 3、冲突号成功更换新手机号后,再退出冲突号,\n并重新登录当前号进行绑定
- 当前号
- 冲突号
- 换个手机号试试
- 取消绑定
- 更换手机号
- 新手机号与当前手机号相同,暂不支持本\n次绑定
- 我知道了
点击立即查看
查看更多
@@ -760,8 +707,6 @@
点击更换背景
- 提交反馈
-
求游戏
求功能
@@ -808,7 +753,6 @@
- 完美,太棒了
将已安装游戏标记为玩过的游戏
- https://v.douyin.com/C9UHr6/
你有%1$d]]>款预约的游戏上线啦
欢迎您使用光环助手!\n在您使用光环助手之前,请您认真阅读《用户协议》和《隐私政策》的全部内容,以了解用户权利义务和个人信息处理规则。主要内容向您说明如下:\n1.为了正常地提供优质的产品服务,基于您的授权我们会获取必要的个人信息,您有权拒绝或取消授权\n2.我们会采取合理的安全措施保护您的个人信息,防止数据被不当使用或未经授权的情况下被访问、公开披露、使用、修改、损坏、丢失或泄漏。\n3.未经您同意,我们不会从第三方处获取、共享或向其提供您的信息\n4.您可以查询、更正、删除您的个人信息,我们也提供账户注销的渠道
此游戏下载资源由第三方提供。若该资源侵犯了您的合法权益或违反了当地法规,请点击页面右上角-版权申诉,按指引发起申诉,我们会尽快联系您并解决。
diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/Config.kt b/module_common/src/main/java/com/gh/gamecenter/common/constant/Config.kt
index 9b823b63b3..c7bc495186 100644
--- a/module_common/src/main/java/com/gh/gamecenter/common/constant/Config.kt
+++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/Config.kt
@@ -7,6 +7,11 @@ import com.gh.gamecenter.core.utils.SPUtils.setString
object Config {
+ const val FIX_DOWNLOAD_KEY = "isFixDownload"
+ const val FIX_PLUGIN_KEY = "isFixPlugin"
+ const val FIX_ARTICLE_KEY = "isFixArticle"
+ const val FIX_COMMUNITY_KEY = "isFixCommunity"
+
const val DEFAULT_CHANNEL = "GH_TEST3"
const val DEFAULT_CHANNEL_FOR_RELEASE = "GH_LOST" // 正式包的缺省渠道,避免因渠道丢失而回落到测试渠道
private var mDefaultSharedPreferences: SharedPreferences? = null
@@ -37,4 +42,22 @@ object Config {
}
return mDefaultSharedPreferences!!
}
+
+ fun isExistHideFunction(): Boolean {
+ if (!getPreferences().getBoolean(FIX_DOWNLOAD_KEY, false)) return true
+ if (!getPreferences().getBoolean(FIX_PLUGIN_KEY, false)) return true
+ if (!getPreferences().getBoolean(FIX_COMMUNITY_KEY, false)) return true
+ if (!getPreferences().getBoolean(FIX_ARTICLE_KEY, false)) return true
+ return false
+ }
+
+ fun fixHideFunction() {
+ getPreferences().edit().run {
+ putBoolean(FIX_DOWNLOAD_KEY, true)
+ putBoolean(FIX_ARTICLE_KEY, true)
+ putBoolean(FIX_COMMUNITY_KEY, true)
+ putBoolean(FIX_PLUGIN_KEY, true)
+ apply()
+ }
+ }
}
\ No newline at end of file
diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt
index 5ce712cb76..e4c046e536 100644
--- a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt
+++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt
@@ -5,13 +5,17 @@ object RouteConsts {
object activity {
const val splashActivity = "/app/SplashScreenActivity"
- const val aboutActivity = "/setting/AboutActivity"
+ const val aboutActivity = "/settings/AboutActivity"
const val webActivity = "/setting/WebActivity"
const val weiBoShareActivity = "/setting/weiBoShareActivity"
const val loginActivity = "/login/LoginActivity"
const val bindPhoneActivity = "/security/BindPhoneActivity"
+
+ const val cleanApkActivity = "/app/cleanApkActivity"
+ const val gameSubmissionActivity = "/app/gameSubmissionActivity"
+ const val suggestionActivity = "/app/suggestionActivity"
}
object fragment {
@@ -44,6 +48,12 @@ object RouteConsts {
const val floatingBackViewManager = "/services/floatingBackViewManager"
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 userManager = "/login/userManager"
const val quickLogin = "/login/quickLogin"
diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/NewFlatLogUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/NewFlatLogUtils.kt
new file mode 100644
index 0000000000..33c123ef03
--- /dev/null
+++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/NewFlatLogUtils.kt
@@ -0,0 +1,36 @@
+package com.gh.gamecenter.common.utils
+
+import com.gh.gamecenter.common.json.JsonObjectBuilder
+import com.gh.gamecenter.common.json.json
+import com.gh.gamecenter.common.loghub.LoghubUtils
+import com.lightgame.utils.Utils
+import org.json.JSONObject
+
+
+object NewFlatLogUtils {
+ private fun log(jsonObject: JSONObject, logStore: String, uploadImmediately: Boolean) {
+ Utils.log("NewLogUtils", jsonObject.toString(4))
+ LoghubUtils.log(jsonObject, logStore, uploadImmediately)
+ }
+
+ private fun parseAndPutMeta(): JsonObjectBuilder.() -> Unit = {
+ val meta = LogUtils.getNewMetaObject()
+ val metaKeys = meta.keys()
+ while (metaKeys.hasNext()) {
+ val key: String = metaKeys.next().toString()
+ val value = meta.getString(key)
+ key to value
+ }
+ }
+
+ //设置点击深色模式跟随系统切换开关
+ @JvmStatic
+ fun logHaloSelfNightModeOsSwitch(isOn: Boolean) {
+ val json = json {
+ "event" to "halo_self_night_mode_os_switch"
+ "is_on" to isOn
+ parseAndPutMeta().invoke(this)
+ }
+ log(json, "event", false)
+ }
+}
\ No newline at end of file
diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/NewLogUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/NewLogUtils.kt
index 5f49fcef3f..bb1621f468 100644
--- a/module_common/src/main/java/com/gh/gamecenter/common/utils/NewLogUtils.kt
+++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/NewLogUtils.kt
@@ -70,4 +70,18 @@ object NewLogUtils {
}
log(json, "event", false)
}
+
+ //点击微信提醒
+ @JvmStatic
+ fun logWechatRemindConfigClick(isBind: Boolean, isFollow: Boolean, isRemind: Boolean) {
+ val json = json {
+ "event" to "appointment_wechat_remind_config_click"
+ "wechat_is_bind" to isBind
+ "wechat_is_follow" to isFollow
+ "wechat_is_remind" to isRemind
+ "timestamp" to System.currentTimeMillis() / 1000
+ parseAndPutMeta().invoke(this)
+ }
+ log(json, "appointment", false)
+ }
}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt
index 60a5510c39..015d7caf7a 100644
--- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IAppProvider.kt
@@ -14,6 +14,8 @@ interface IAppProvider : IProvider {
fun getChannel(): String
+ fun setChannel(channel: String)
+
fun getUserAgent(): String
fun getServerUserMark(): String
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt
new file mode 100644
index 0000000000..b9b495e4a5
--- /dev/null
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IBrowserInstallHelperProvider.kt
@@ -0,0 +1,9 @@
+package com.gh.gamecenter.core.provider
+
+import com.alibaba.android.arouter.facade.template.IProvider
+
+interface IBrowserInstallHelperProvider : IProvider {
+ fun isUseBrowserToInstallEnabled(): Boolean
+ fun shouldUseBrowserToInstall(): Boolean
+ fun logSwitchInstallSettingEvent()
+}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt
index 3306057c5c..22637b9ad6 100644
--- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IConfigProvider.kt
@@ -19,4 +19,5 @@ interface IConfigProvider : IProvider {
fun getQuickLoginAppId(): String
fun getQuickLoginAppKey(): String
fun getWeiboAppKey(): String
+ fun getNightModeSetting(): Boolean
}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt
index 7290261546..3da2c5f35b 100644
--- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDialogUtilsProvider.kt
@@ -1,9 +1,20 @@
package com.gh.gamecenter.core.provider
+import android.app.Dialog
import android.content.Context
import com.alibaba.android.arouter.facade.template.IProvider
interface IDialogUtilsProvider : IProvider {
fun showRegulationTestDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit)
+
+ fun showWaitDialog(context: Context, string: String): Dialog
+
+ fun showForceDialog(context: Context, title: String, message: CharSequence, positive: String, negative: String, confirm: () -> Unit, cancel: () -> Unit)
+
+ fun showUsageStatsDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit)
+
+ fun showNoticeDialog(context: Context, title: String, content: String, confirm: () -> Unit)
+
+ fun showBindPhoneDialog(context: Context, confirm: () -> Unit): Dialog
}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt
index a861f68e94..589643b1c9 100644
--- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IDirectProvider.kt
@@ -23,4 +23,8 @@ interface IDirectProvider : IProvider {
fun directToExchangeCommodityPage(context: Context)
fun directToLotteryParadisePage(context: Context)
+
+ fun directDouyin(context: Context, userId: String)
+
+ fun directToSuggestionFromDiagnosis(context: Context, diagnosis: String)
}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt
new file mode 100644
index 0000000000..d4e1e788fd
--- /dev/null
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IHistoryHelperProvider.kt
@@ -0,0 +1,7 @@
+package com.gh.gamecenter.core.provider
+
+import com.alibaba.android.arouter.facade.template.IProvider
+
+interface IHistoryHelperProvider : IProvider {
+ fun emptyDatabase()
+}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt
new file mode 100644
index 0000000000..867a78739c
--- /dev/null
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IMainProvider.kt
@@ -0,0 +1,9 @@
+package com.gh.gamecenter.core.provider
+
+import android.content.Context
+import android.content.Intent
+import com.alibaba.android.arouter.facade.template.IProvider
+
+interface IMainProvider : IProvider {
+ fun skipToMainActivity(context: Context, position: Int)
+}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt
new file mode 100644
index 0000000000..3eb5a9752d
--- /dev/null
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IShellProvider.kt
@@ -0,0 +1,10 @@
+package com.gh.gamecenter.core.provider
+
+import android.content.Context
+import android.content.Intent
+import android.os.Parcelable
+import com.alibaba.android.arouter.facade.template.IProvider
+
+interface IShellProvider : IProvider {
+ fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent?
+}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt
new file mode 100644
index 0000000000..a84c93006d
--- /dev/null
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUpdateManagerProvider.kt
@@ -0,0 +1,9 @@
+package com.gh.gamecenter.core.provider
+
+import android.content.Context
+import android.os.Handler
+import com.alibaba.android.arouter.facade.template.IProvider
+
+interface IUpdateManagerProvider: IProvider {
+ fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler)
+}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt
new file mode 100644
index 0000000000..2a97cc203b
--- /dev/null
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IUsageStatsHelperProvider.kt
@@ -0,0 +1,9 @@
+package com.gh.gamecenter.core.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.template.IProvider
+
+interface IUsageStatsHelperProvider : IProvider {
+ fun checkForPermission(): Boolean
+ fun skipToUsageStats(context: Context, requestCode: Int)
+}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt
index bedcb5ff3a..1d03a29b2d 100644
--- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWebProvider.kt
@@ -8,4 +8,8 @@ interface IWebProvider : IProvider {
fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent?
fun getWebIntent(context: Context, title: String, url: String): Intent?
+
+ fun getBindWechatIntent(context: Context): Intent?
+
+ fun getSecurityCertificationIntent(context: Context): Intent?
}
\ No newline at end of file
diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt
index f6db0e06d3..7fbf565b4e 100644
--- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt
+++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IWechatBindHelperProvider.kt
@@ -3,5 +3,5 @@ package com.gh.gamecenter.core.provider
import com.alibaba.android.arouter.facade.template.IProvider
interface IWechatBindHelperProvider : IProvider {
- fun getWechatConfig()
+ fun getWechatConfig(callback: (() -> Unit)? = null)
}
\ No newline at end of file
diff --git a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/AppProviderImpl.kt b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/AppProviderImpl.kt
index e205ace42f..dc0829ab1d 100644
--- a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/AppProviderImpl.kt
+++ b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/AppProviderImpl.kt
@@ -21,6 +21,10 @@ class AppProviderImpl : IAppProvider {
return ""
}
+ override fun refreshGid() {
+ // Do nothing
+ }
+
override fun getOaid(): String {
return ""
}
@@ -29,6 +33,10 @@ class AppProviderImpl : IAppProvider {
return ""
}
+ override fun setChannel(channel: String) {
+ // Do nothing
+ }
+
override fun getUserAgent(): String {
return ""
}
diff --git a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/ConfigProviderImpl.kt b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/ConfigProviderImpl.kt
index 4118c38282..64c9aadaac 100644
--- a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/ConfigProviderImpl.kt
+++ b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/ConfigProviderImpl.kt
@@ -72,6 +72,10 @@ class ConfigProviderImpl : IConfigProvider {
return BuildConfig.WEIBO_APPKEY
}
+ override fun getNightModeSetting(): Boolean {
+ return false
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DialogUtilsProviderImpl.kt b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DialogUtilsProviderImpl.kt
index efb1d9eb9c..3e7e8a3955 100644
--- a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DialogUtilsProviderImpl.kt
+++ b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DialogUtilsProviderImpl.kt
@@ -1,5 +1,6 @@
package com.gh.gamecenter.energy.provider
+import android.app.Dialog
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.gh.gamecenter.common.constant.RouteConsts
@@ -12,6 +13,41 @@ class DialogUtilsProviderImpl : IDialogUtilsProvider {
ToastUtils.toast("调用->DialogUtilsProviderImpl.showRegulationTestDialog")
}
+ override fun showWaitDialog(context: Context, string: String): Dialog {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showWaitDialog")
+ return Dialog(context)
+ }
+
+ override fun showForceDialog(
+ context: Context,
+ title: String,
+ message: CharSequence,
+ positive: String,
+ negative: String,
+ confirm: () -> Unit,
+ cancel: () -> Unit
+ ) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showForceDialog")
+ }
+
+ override fun showUsageStatsDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showUsageStatsDialog")
+ }
+
+ override fun showNoticeDialog(
+ context: Context,
+ title: String,
+ content: String,
+ confirm: () -> Unit
+ ) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showNoticeDialog")
+ }
+
+ override fun showBindPhoneDialog(context: Context, confirm: () -> Unit): Dialog {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showBindPhoneDialog")
+ return Dialog(context)
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DirectProviderImpl.kt b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DirectProviderImpl.kt
index 68fad8ce04..93a1065513 100644
--- a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DirectProviderImpl.kt
+++ b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/DirectProviderImpl.kt
@@ -49,6 +49,14 @@ class DirectProviderImpl : IDirectProvider {
ToastUtils.toast("调用->DirectProviderImpl.directToLotteryParadisePage")
}
+ override fun directDouyin(context: Context, userId: String) {
+ ToastUtils.toast("调用->DirectProviderImpl.directDouyin")
+ }
+
+ override fun directToSuggestionFromDiagnosis(context: Context, diagnosis: String) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToSuggestionFromDiagnosis")
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WebProviderImpl.kt b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WebProviderImpl.kt
index efda786524..eb60b797b8 100644
--- a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WebProviderImpl.kt
+++ b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WebProviderImpl.kt
@@ -16,6 +16,14 @@ class WebProviderImpl : IWebProvider {
return null
}
+ override fun getBindWechatIntent(context: Context): Intent? {
+ return null
+ }
+
+ override fun getSecurityCertificationIntent(context: Context): Intent? {
+ return null
+ }
+
override fun init(context: Context?) {
// Do nothing
}
diff --git a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WechatHelperProviderImpl.kt b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WechatHelperProviderImpl.kt
index 1548b9c80a..7f840ef709 100644
--- a/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WechatHelperProviderImpl.kt
+++ b/module_energy/src/energy/java/com/gh/gamecenter/energy/provider/WechatHelperProviderImpl.kt
@@ -7,7 +7,7 @@ import com.gh.gamecenter.core.provider.IWechatBindHelperProvider
@Route(path = RouteConsts.provider.wechatHelper, name = "WechatHelper暴露服务")
class WechatHelperProviderImpl : IWechatBindHelperProvider {
- override fun getWechatConfig() {
+ override fun getWechatConfig(callback: (() -> Unit)?) {
// Do nothing
}
diff --git a/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java b/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java
index 4b4e90ece6..70adf29fd9 100644
--- a/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java
+++ b/module_login/src/main/java/com/gh/gamecenter/login/user/UserRepository.java
@@ -143,10 +143,14 @@ public class UserRepository {
SPUtils.setString(Constants.SP_REGULATION_TEST_PASS_STATUS, "");
IReservationRepositoryProvider reservationRepository = (IReservationRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.reservationRepository).navigation();
- reservationRepository.clearReservations();
+ if (reservationRepository != null) {
+ reservationRepository.clearReservations();
+ }
IGameSubstituteRepositoryProvider gameSubstituteRepository = (IGameSubstituteRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.gameSubstituteRepository).navigation();
- gameSubstituteRepository.updateSubstitutableGames();
+ if (gameSubstituteRepository != null) {
+ gameSubstituteRepository.updateSubstitutableGames();
+ }
// 通知页面更新
EventBus.getDefault().post(new EBReuse(LOGOUT_TAG));
@@ -240,7 +244,7 @@ public class UserRepository {
IGameSubstituteRepositoryProvider gameSubstituteRepository = (IGameSubstituteRepositoryProvider) ARouter.getInstance().build(RouteConsts.provider.gameSubstituteRepository).navigation();
gameSubstituteRepository.updateSubstitutableGames();
IWechatBindHelperProvider wechatBindHelper = (IWechatBindHelperProvider) ARouter.getInstance().build(RouteConsts.provider.wechatHelper).navigation();
- wechatBindHelper.getWechatConfig();
+ wechatBindHelper.getWechatConfig(null);
if (callback != null) {
callback.onFirst(response);
diff --git a/module_setting/.gitignore b/module_setting/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/module_setting/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/module_setting/build.gradle b/module_setting/build.gradle
new file mode 100644
index 0000000000..20cf274e8a
--- /dev/null
+++ b/module_setting/build.gradle
@@ -0,0 +1,93 @@
+if (isRelease.toBoolean()) {
+ apply plugin: 'com.android.library'
+} else {
+ apply plugin: 'com.android.application'
+}
+apply plugin: 'org.jetbrains.kotlin.android'
+apply plugin: 'kotlin-kapt'
+apply plugin: 'kotlin-parcelize'
+
+android {
+ compileSdkVersion rootProject.ext.compileSdkVersion
+
+ defaultConfig {
+ if (!isRelease.toBoolean()) {
+ applicationId "com.gh.setting"
+ multiDexEnabled true
+
+ buildConfigField "String", "API_HOST", "\"${API_HOST}\""
+ }
+ minSdk rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode rootProject.ext.versionCode
+ versionName rootProject.ext.versionName
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ sourceSets {
+ main {
+ if (isRelease.toBoolean()) {
+ manifest.srcFile 'src/main/AndroidManifest.xml'
+ java {
+ exclude 'manifest/**'
+ }
+ } else {
+ java {
+ srcDirs = ['src/main/java', "src/setting/java"]
+ }
+ manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
+ }
+ }
+ }
+
+ buildFeatures {
+ viewBinding true
+ }
+
+ kapt {
+ arguments {
+ arg("AROUTER_MODULE_NAME", project.name)
+ }
+ }
+
+ buildTypes {
+ debug {
+ if (!isRelease.toBoolean()) {
+ buildConfigField "String", "DEV_API_HOST", "\"${DEV_API_HOST}\""
+ }
+ }
+
+ release {
+ consumerProguardFiles 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+}
+
+dependencies {
+ implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
+ kapt "com.alibaba:arouter-compiler:$arouterVersion"
+ if (!isRelease.toBoolean()) {
+ implementation "androidx.multidex:multidex:${multiDex}"
+ }
+
+ implementation(project(path: ":module_common")) {
+ exclude group: 'androidx.swiperefreshlayout'
+ }
+ implementation(project(path: ":module_login")) {
+ exclude group: 'androidx.swiperefreshlayout'
+ }
+
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+}
\ No newline at end of file
diff --git a/module_setting/proguard-rules.pro b/module_setting/proguard-rules.pro
new file mode 100644
index 0000000000..5d7aedf5bf
--- /dev/null
+++ b/module_setting/proguard-rules.pro
@@ -0,0 +1,29 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+
+-renamesourcefileattribute SourceFile
+# Keep Attribute
+-keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod,SourceFile,LineNumberTable
+
+### keep models
+-keep class com.gh.gamecenter.setting.entity.* {*;}
+-keep class com.gh.gamecenter.setting.retrofit.* {*;}
\ No newline at end of file
diff --git a/module_setting/src/androidTest/java/com/gh/gamecenter/setting/ExampleInstrumentedTest.kt b/module_setting/src/androidTest/java/com/gh/gamecenter/setting/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000000..faec418941
--- /dev/null
+++ b/module_setting/src/androidTest/java/com/gh/gamecenter/setting/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.gh.gamecenter.setting
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("com.gh.gamecenter.setting", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/main/AndroidManifest.xml b/module_setting/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..4fd81e865c
--- /dev/null
+++ b/module_setting/src/main/AndroidManifest.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/assets/lottie/switch_turnoff_dark.json b/module_setting/src/main/assets/lottie/switch_turnoff_dark.json
new file mode 100644
index 0000000000..4e0290ccb4
--- /dev/null
+++ b/module_setting/src/main/assets/lottie/switch_turnoff_dark.json
@@ -0,0 +1 @@
+{"v":"5.9.1","fr":60,"ip":0,"op":36,"w":120,"h":66,"nm":"开关动画-关闭","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"按钮手柄","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.667,"y":0},"t":0,"s":[87,33,0],"to":[7.682,0,0],"ti":[-13.443,0,0]},{"i":{"x":0.333,"y":1},"o":{"x":0.333,"y":0},"t":18,"s":[31,33,0],"to":[2.306,0,0],"ti":[-1.318,0,0]},{"t":24,"s":[33,33,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[16,16],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"指示器-on","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[100]},{"t":18,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[6.5,6.5]},{"t":18,"s":[4.5,4.5]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":40,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"指示器-off","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[87,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[1.5,4]},{"t":18,"s":[1.5,6]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0.75,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":20,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0]},{"t":18,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"按钮背景","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[60,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40,22],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":12,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0.156862750649,0.533333361149,0.878431379795,1]},{"t":18,"s":[1,1,1,1]}],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[100]},{"t":18,"s":[8]}],"ix":5},"r":1,"bm":0,"nm":"filling","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.118,0.006],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/module_setting/src/main/assets/lottie/switch_turnoff_light.json b/module_setting/src/main/assets/lottie/switch_turnoff_light.json
new file mode 100644
index 0000000000..7b0d088767
--- /dev/null
+++ b/module_setting/src/main/assets/lottie/switch_turnoff_light.json
@@ -0,0 +1 @@
+{"v":"5.9.1","fr":60,"ip":0,"op":36,"w":120,"h":66,"nm":"开关动画-关闭","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"按钮手柄","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.667,"y":0},"t":0,"s":[87,33,0],"to":[7.682,0,0],"ti":[-13.443,0,0]},{"i":{"x":0.333,"y":1},"o":{"x":0.333,"y":0},"t":18,"s":[31,33,0],"to":[2.306,0,0],"ti":[-1.318,0,0]},{"t":24,"s":[33,33,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[16,16],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"指示器-on","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[100]},{"t":18,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[6.5,6.5]},{"t":18,"s":[4.5,4.5]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":40,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"指示器-off","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[87,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[1.5,4]},{"t":18,"s":[1.5,6]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0.75,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":5,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0]},{"t":18,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"按钮背景","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[60,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40,22],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":12,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0.141176477075,0.588235318661,1,1]},{"t":18,"s":[0.933333337307,0.933333337307,0.933333337307,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"filling","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.118,0.006],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/module_setting/src/main/assets/lottie/switch_turnon_dark.json b/module_setting/src/main/assets/lottie/switch_turnon_dark.json
new file mode 100644
index 0000000000..a897cea988
--- /dev/null
+++ b/module_setting/src/main/assets/lottie/switch_turnon_dark.json
@@ -0,0 +1 @@
+{"v":"5.9.1","fr":60,"ip":0,"op":36,"w":120,"h":66,"nm":"开关动画-打开","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"按钮手柄","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.667,"y":0},"t":0,"s":[33,33,0],"to":[7.682,0,0],"ti":[-13.443,0,0]},{"i":{"x":0.333,"y":1},"o":{"x":0.333,"y":0},"t":18,"s":[89,33,0],"to":[2.306,0,0],"ti":[-1.318,0,0]},{"t":24,"s":[87,33,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[16,16],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"指示器-on","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0]},{"t":18,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[4.5,4.5]},{"t":18,"s":[6.5,6.5]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":40,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"指示器-off","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[87,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[1.5,6]},{"t":18,"s":[1.5,4]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0.75,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":20,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[100]},{"t":18,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"按钮背景","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[60,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40,22],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":12,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[1,1,1,1]},{"t":18,"s":[0.156862750649,0.533333361149,0.878431379795,1]}],"ix":4},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[8]},{"t":18,"s":[100]}],"ix":5},"r":1,"bm":0,"nm":"filling","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.118,0.006],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/module_setting/src/main/assets/lottie/switch_turnon_light.json b/module_setting/src/main/assets/lottie/switch_turnon_light.json
new file mode 100644
index 0000000000..31f139b617
--- /dev/null
+++ b/module_setting/src/main/assets/lottie/switch_turnon_light.json
@@ -0,0 +1 @@
+{"v":"5.9.1","fr":60,"ip":0,"op":36,"w":120,"h":66,"nm":"开关动画-打开","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"按钮手柄","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.667,"y":0},"t":0,"s":[33,33,0],"to":[7.682,0,0],"ti":[-13.443,0,0]},{"i":{"x":0.333,"y":1},"o":{"x":0.333,"y":0},"t":18,"s":[89,33,0],"to":[2.306,0,0],"ti":[-1.318,0,0]},{"t":24,"s":[87,33,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[16,16],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"指示器-on","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0]},{"t":18,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[33,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[4.5,4.5]},{"t":18,"s":[6.5,6.5]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":40,"ix":4},"w":{"a":0,"k":1.5,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"指示器-off","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[87,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.667,0.667],"y":[0,0]},"t":0,"s":[1.5,6]},{"t":18,"s":[1.5,4]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0.75,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":5,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":90,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[100]},{"t":18,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"按钮背景","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[60,33,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40,22],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":12,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.667],"y":[0]},"t":0,"s":[0.933332979679,0.933332979679,0.933332979679,1]},{"t":18,"s":[0.141176477075,0.588235318661,1,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"filling","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0.118,0.006],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[300,300],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":37,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/HaloApp.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/HaloApp.kt
new file mode 100644
index 0000000000..deecb33e68
--- /dev/null
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/HaloApp.kt
@@ -0,0 +1,44 @@
+package com.gh.gamecenter.setting
+
+import android.app.Application
+import android.content.res.Configuration
+import com.gh.gamecenter.core.iinterface.IApplication
+import com.google.auto.service.AutoService
+
+@AutoService(IApplication::class)
+class HaloApp : IApplication {
+
+ override fun attachBaseContext() {
+ // Do nothing
+ }
+
+ override fun onCreate(application: Application) {
+ mApp = application
+ }
+
+
+ override fun onLowMemory() {
+ // Do nothing
+ }
+
+ override fun onTerminate() {
+ // Do nothing
+ }
+
+ override fun onTrimMemory(level: Int) {
+ // Do nothing
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ // Do nothing
+ }
+
+ companion object {
+ private lateinit var mApp: Application
+
+ @JvmStatic
+ fun getInstance(): Application {
+ return mApp
+ }
+ }
+}
diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/entity/ConflictUserEntity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/entity/ConflictUserEntity.kt
new file mode 100644
index 0000000000..b965f94e19
--- /dev/null
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/entity/ConflictUserEntity.kt
@@ -0,0 +1,23 @@
+package com.gh.gamecenter.setting.entity
+
+import android.os.Parcelable
+import androidx.annotation.Keep
+import com.gh.gamecenter.login.entity.Badge
+import com.google.gson.annotations.SerializedName
+import kotlinx.parcelize.Parcelize
+
+@Keep
+@Parcelize
+data class ConflictUserEntity(
+ val user: User? = null,
+ @SerializedName("register_type")
+ var registerType: String = ""
+) : Parcelable
+
+@Parcelize
+data class User(
+ @SerializedName("_id")
+ var id: String = "",
+ var name: String = "",
+ var icon: String = "",
+ var badge: Badge? = null) : Parcelable
\ No newline at end of file
diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/entity/WechatConfigEntity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/entity/WechatConfigEntity.kt
new file mode 100644
index 0000000000..d64c71e22f
--- /dev/null
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/entity/WechatConfigEntity.kt
@@ -0,0 +1,11 @@
+package com.gh.gamecenter.setting.entity
+
+import com.google.gson.annotations.SerializedName
+
+data class WechatConfigEntity(
+ var bind: Boolean = false,//用户是否绑定微信
+ var follow: Boolean = false,//绑定的微信是否关注光环助手
+ var notice: Boolean = false,//是否打开微信通知开关
+ @SerializedName("nickname")
+ var nickName: String = "",
+)
\ No newline at end of file
diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/retrofit/ApiService.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/retrofit/ApiService.kt
new file mode 100644
index 0000000000..cba3f580e9
--- /dev/null
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/retrofit/ApiService.kt
@@ -0,0 +1,26 @@
+package com.gh.gamecenter.setting.retrofit
+
+import io.reactivex.Single
+import okhttp3.RequestBody
+import okhttp3.ResponseBody
+import retrofit2.http.Body
+import retrofit2.http.Headers
+import retrofit2.http.POST
+import retrofit2.http.Query
+
+interface ApiService {
+ /**
+ * 绑定手机
+ */
+ @Headers("Content-Type: application/json", "Accept: application/json")
+ @POST("./mobile:bind")
+ fun bindPhone(@Query("step") step: Int, @Body body: RequestBody): Single
+
+ /**
+ * 换绑手机
+ */
+ @Headers("Content-Type: application/json", "Accept: application/json")
+ @POST("./mobile:rebind")
+ fun reBindPhone(@Query("step") step: Int, @Body body: RequestBody): Single
+
+}
\ No newline at end of file
diff --git a/module_setting/src/main/java/com/gh/gamecenter/setting/retrofit/RetrofitManager.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/retrofit/RetrofitManager.kt
new file mode 100644
index 0000000000..38c32a4fa9
--- /dev/null
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/retrofit/RetrofitManager.kt
@@ -0,0 +1,19 @@
+package com.gh.gamecenter.setting.retrofit
+
+import com.gh.gamecenter.common.retrofit.BaseRetrofitManager
+import com.gh.gamecenter.common.utils.EnvHelper.getHost
+import com.gh.gamecenter.core.utils.SingletonHolder
+import com.gh.gamecenter.setting.HaloApp
+
+class RetrofitManager private constructor(): BaseRetrofitManager() {
+
+ val api: ApiService
+
+ init {
+ val context = HaloApp.getInstance().applicationContext
+ val okHttpNormalConfig = getOkHttpConfig(context, 0, 2)
+ api = provideService(okHttpNormalConfig, getHost(), ApiService::class.java)
+ }
+
+ companion object: SingletonHolder(::RetrofitManager)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/AboutActivity.java b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java
similarity index 94%
rename from app/src/main/java/com/gh/gamecenter/AboutActivity.java
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java
index 23fead2e18..542aff3977 100644
--- a/app/src/main/java/com/gh/gamecenter/AboutActivity.java
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutActivity.java
@@ -1,4 +1,4 @@
-package com.gh.gamecenter;
+package com.gh.gamecenter.setting.view;
import android.content.Context;
import android.content.Intent;
@@ -11,7 +11,7 @@ import com.gh.gamecenter.common.base.activity.ToolBarActivity;
import com.gh.gamecenter.common.constant.EntranceConsts;
import com.gh.gamecenter.common.constant.RouteConsts;
import com.gh.gamecenter.common.utils.ExtensionsKt;
-import com.halo.assistant.fragment.AboutFragment;
+import com.gh.gamecenter.setting.R;
/**
* Created by khy on 2017/2/28.
@@ -42,4 +42,4 @@ public class AboutActivity extends ToolBarActivity {
super.onDarkModeChanged();
ExtensionsKt.updateStatusBarColor(this, R.color.background_white, R.color.background_white);
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/halo/assistant/fragment/AboutFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt
similarity index 67%
rename from app/src/main/java/com/halo/assistant/fragment/AboutFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt
index b755bc8c1f..eae89e765d 100644
--- a/app/src/main/java/com/halo/assistant/fragment/AboutFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/AboutFragment.kt
@@ -1,4 +1,4 @@
-package com.halo.assistant.fragment
+package com.gh.gamecenter.setting.view
import android.annotation.SuppressLint
import android.app.Activity
@@ -11,24 +11,21 @@ import android.preference.PreferenceManager
import android.text.TextUtils
import android.view.View
import androidx.core.content.ContextCompat
-import com.gh.common.util.*
-import com.gh.gamecenter.R
-import com.gh.gamecenter.WebActivity
+import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.EntranceConsts
-import com.gh.gamecenter.common.utils.*
-import com.gh.gamecenter.core.utils.MtaHelper.onEvent
-import com.gh.gamecenter.core.utils.SPUtils
-import com.gh.gamecenter.core.utils.StringUtils
-import com.gh.gamecenter.core.utils.TimeUtils.getFormatTime
-import com.gh.gamecenter.core.utils.ToastUtils
-import com.gh.gamecenter.databinding.FragmentAboutBinding
-import com.gh.gamecenter.manager.UpdateManager
-import com.halo.assistant.HaloApp
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.common.utils.DialogHelper
+import com.gh.gamecenter.common.utils.PackageFlavorHelper
+import com.gh.gamecenter.common.utils.copyTextAndToast
+import com.gh.gamecenter.common.utils.toColor
+import com.gh.gamecenter.core.provider.*
+import com.gh.gamecenter.core.utils.*
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentAboutBinding
import java.util.*
-
class AboutFragment : ToolbarFragment() {
private lateinit var mBinding: FragmentAboutBinding
@@ -64,15 +61,16 @@ class AboutFragment : ToolbarFragment() {
val serverTime = PreferenceManager.getDefaultSharedPreferences(requireContext())
.getLong("server_time", 1587693163L)
- val year = getFormatTime(serverTime, "yyyy")
+ val year = TimeUtils.getFormatTime(serverTime, "yyyy")
mBinding.copyrightTv.text = getString(R.string.copyright_hint, year)
if (arguments != null && requireArguments().getBoolean(EntranceConsts.KEY_VERSION_UPDATE)) {
- UpdateManager.getInstance(context).checkUpdate(false, mBaseHandler) // 检查更新
+ val updateManager = ARouter.getInstance().build(RouteConsts.provider.updateManager).navigation() as? IUpdateManagerProvider
+ updateManager?.checkUpdate(requireContext(), false, mBaseHandler) // 检查更新
}
mBinding.aboutGhIcon.setOnLongClickListener {
- onEvent("我的光环_设置", "关于光环", "图标长按")
+ MtaHelper.onEvent("我的光环_设置", "关于光环", "图标长按")
if (PackageFlavorHelper.IS_TEST_FLAVOR) {
DialogHelper.showDialog(
requireContext(),
@@ -88,7 +86,8 @@ class AboutFragment : ToolbarFragment() {
}, extraConfig = DialogHelper.Config(centerTitle = true, centerContent = true)
)
} else {
- toast(HaloApp.getInstance().channel)
+ val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
+ toast(appProvider?.getChannel())
}
false
}
@@ -97,14 +96,18 @@ class AboutFragment : ToolbarFragment() {
@SuppressLint("SetTextI18n")
private fun initView() {
- mBinding.aboutTvVersion.text = "V" + PackageUtils.getGhVersionName()
+ val packageUtils = ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
+ val webActivity = ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider
+
+ mBinding.aboutTvVersion.text = "V" + packageUtils?.getGhVersionName()
if (PackageFlavorHelper.IS_TEST_FLAVOR == true) {
var channel = SPUtils.getString(Constants.SP_TEST_FLAVOR_CHANNEL)
if (channel == null || TextUtils.isEmpty(channel)) {
- channel = HaloApp.getInstance().channel
+ val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
+ channel = appProvider?.getChannel() ?: ""
}
- mBinding.aboutTvVersion.text = "V" + PackageUtils.getGhVersionName() + "($channel)"
+ mBinding.aboutTvVersion.text = "V" + packageUtils?.getGhVersionName() + "($channel)"
}
mBinding.updateItem.run {
@@ -112,17 +115,18 @@ class AboutFragment : ToolbarFragment() {
contentTv.text = ""
contentTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "关于光环", "版本更新")
- UpdateManager.getInstance(context).checkUpdate(false, mBaseHandler) // 检查更新
+ MtaHelper.onEvent("我的光环_设置", "关于光环", "版本更新")
+ val updateManager = ARouter.getInstance().build(RouteConsts.provider.updateManager).navigation() as? IUpdateManagerProvider
+ updateManager?.checkUpdate(requireContext(), false, mBaseHandler) // 检查更新
}
}
mBinding.userProtocolItem.run {
titleTv.text = "用户协议"
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "关于光环", "用户协议")
+ MtaHelper.onEvent("我的光环_设置", "关于光环", "用户协议")
startActivity(
- WebActivity.getWebIntent(
+ webActivity?.getWebIntent(
requireContext(),
requireContext().getString(R.string.disclaimer_title),
requireContext().getString(R.string.disclaimer_url)
@@ -134,9 +138,9 @@ class AboutFragment : ToolbarFragment() {
titleTv.text = "隐私政策"
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "关于光环", "隐私政策")
+ MtaHelper.onEvent("我的光环_设置", "关于光环", "隐私政策")
startActivity(
- WebActivity.getWebIntent(
+ webActivity?.getWebIntent(
requireContext(),
requireContext().getString(R.string.privacy_policy_title),
requireContext().getString(R.string.privacy_policy_url)
@@ -149,17 +153,18 @@ class AboutFragment : ToolbarFragment() {
textMoreTv.text = "光环助手APP"
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "关于光环", "抖音")
+ MtaHelper.onEvent("我的光环_设置", "关于光环", "抖音")
val url = getString(R.string.gh_douyin_url)
url.copyTextAndToast(String.format(Locale.CHINA, "已成功复制%s ,打开抖音可直达", url))
- DirectUtils.directDouyin(requireContext(), "1402577827140941")
+ val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
+ directUtils?.directDouyin(requireContext(), "1402577827140941")
}
}
mBinding.aboutBottom.setOnLongClickListener {
- onEvent("我的光环_设置", "关于光环", "底部长按")
+ MtaHelper.onEvent("我的光环_设置", "关于光环", "底部长按")
if (context == null) return@setOnLongClickListener true
if (context is Activity && (context as Activity).isFinishing) return@setOnLongClickListener true
- startActivity(WebActivity.getSecurityCertificationIntent(requireContext()))
+ startActivity(webActivity?.getSecurityCertificationIntent(requireContext()))
true
}
mBinding.aboutTvVersion.setOnLongClickListener {
diff --git a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingActivity.kt
similarity index 94%
rename from app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingActivity.kt
index 7715680fc2..314eb8bbf1 100644
--- a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingActivity.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingActivity.kt
@@ -1,12 +1,12 @@
-package com.gh.gamecenter.setting
+package com.gh.gamecenter.setting.view
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.gamecenter.R
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.common.utils.updateStatusBarColor
+import com.gh.gamecenter.setting.R
class GameDownloadSettingActivity : ToolBarActivity() {
diff --git a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt
similarity index 71%
rename from app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt
index 4d0ca72e2b..681a688ee8 100644
--- a/app/src/main/java/com/gh/gamecenter/setting/GameDownloadSettingFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/GameDownloadSettingFragment.kt
@@ -1,4 +1,4 @@
-package com.gh.gamecenter.setting
+package com.gh.gamecenter.setting.view
import android.content.Intent
import android.net.Uri
@@ -8,16 +8,19 @@ import android.os.Environment
import android.text.TextUtils
import android.view.View
import androidx.core.content.FileProvider
-import com.gh.common.util.PackageUtils
-import com.gh.gamecenter.BuildConfig
-import com.gh.gamecenter.CleanApkActivity
-import com.gh.gamecenter.R
+import com.alibaba.android.arouter.launcher.ARouter
+import com.gh.gamecenter.common.base.activity.ToolBarActivity
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
+import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.utils.setSwitchAnimation
import com.gh.gamecenter.common.utils.toColor
-import com.gh.gamecenter.core.utils.MtaHelper.onEvent
+import com.gh.gamecenter.core.provider.IBuildConfigProvider
+import com.gh.gamecenter.core.provider.IPackageUtilsProvider
+import com.gh.gamecenter.core.utils.MtaHelper
import com.gh.gamecenter.core.utils.SPUtils
-import com.gh.gamecenter.databinding.FragmentGameDownloadSettingBinding
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentGameDownloadSettingBinding
import java.io.File
class GameDownloadSettingFragment : ToolbarFragment() {
@@ -42,8 +45,8 @@ class GameDownloadSettingFragment : ToolbarFragment() {
root.setOnClickListener {
if (switchLottie.isAnimating) return@setOnClickListener
val status = SPUtils.getBoolean(AUTO_INSTALL_SP_KEY, true)
- onEvent("我的光环_设置", "设置功能", "下载完成自动安装游戏")
- onEvent("我的光环_设置", "自动安装游戏", if (status) "关闭" else "打开")
+ MtaHelper.onEvent("我的光环_设置", "设置功能", "下载完成自动安装游戏")
+ MtaHelper.onEvent("我的光环_设置", "自动安装游戏", if (status) "关闭" else "打开")
switchLottie.setSwitchAnimation(status)
switchLottie.playAnimation()
SPUtils.setBoolean(AUTO_INSTALL_SP_KEY, !status)
@@ -55,8 +58,8 @@ class GameDownloadSettingFragment : ToolbarFragment() {
root.setOnClickListener {
if (switchLottie.isAnimating) return@setOnClickListener
val status = SPUtils.getBoolean(CONCERN_GAME_SP_KEY, true)
- onEvent("我的光环_设置", "设置功能", "安装完成自动关注游戏")
- onEvent("我的光环_设置", "自动关注游戏", if (status) "关闭" else "打开")
+ MtaHelper.onEvent("我的光环_设置", "设置功能", "安装完成自动关注游戏")
+ MtaHelper.onEvent("我的光环_设置", "自动关注游戏", if (status) "关闭" else "打开")
switchLottie.setSwitchAnimation(status)
switchLottie.playAnimation()
SPUtils.setBoolean(CONCERN_GAME_SP_KEY, !status)
@@ -78,7 +81,7 @@ class GameDownloadSettingFragment : ToolbarFragment() {
contentTv.text = getString(R.string.setting_download_path_des)
contentTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "设置功能", "游戏下载目录")
+ MtaHelper.onEvent("我的光环_设置", "设置功能", "游戏下载目录")
if (TextUtils.isEmpty(dirPath)) dirPath = Environment.getExternalStorageDirectory().path + "/gh-files"
startFilePath(dirPath)
}
@@ -88,7 +91,7 @@ class GameDownloadSettingFragment : ToolbarFragment() {
contentTv.text = getString(R.string.setting_pic_path_des)
contentTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "设置功能", "图片保存目录")
+ MtaHelper.onEvent("我的光环_设置", "设置功能", "图片保存目录")
if (TextUtils.isEmpty(dirPath)) dirPath =
Environment.getExternalStorageDirectory().path + "/pictures/ghzhushou"
startFilePath(dirPath)
@@ -98,8 +101,13 @@ class GameDownloadSettingFragment : ToolbarFragment() {
titleTv.text = getString(R.string.setting_clean_package)
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- onEvent("我的光环_设置", "设置功能", "安装包清理")
- startActivity(CleanApkActivity.getIntent(requireContext()))
+ MtaHelper.onEvent("我的光环_设置", "设置功能", "安装包清理")
+ ARouter.getInstance().build(RouteConsts.activity.cleanApkActivity)
+ .withString(ToolBarActivity.NORMAL_FRAGMENT_NAME, "com.halo.assistant.fragment.ApkCleanerFragment")
+ .withBundle(
+ ToolBarActivity.NORMAL_FRAGMENT_BUNDLE,
+ Bundle().apply { putBoolean(EntranceConsts.KEY_IS_CHOOSE_APK, false) })
+ .navigation()
}
}
mBinding?.run {
@@ -112,7 +120,9 @@ class GameDownloadSettingFragment : ToolbarFragment() {
private fun startFilePath(dirPath: String) {
val intent = Intent(Intent.ACTION_GET_CONTENT)
val uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- FileProvider.getUriForFile(requireContext(), BuildConfig.APPLICATION_ID, File(dirPath))
+ val buildConfig =
+ ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
+ FileProvider.getUriForFile(requireContext(), buildConfig?.getApplicationId() ?: "", File(dirPath))
} else {
Uri.fromFile(File(dirPath))
}
@@ -144,7 +154,9 @@ class GameDownloadSettingFragment : ToolbarFragment() {
@JvmStatic
fun getTrafficDownloadHintKey(): String {
- return PackageUtils.getGhVersionName() + "traffic_download_hint"
+ val packageUtils =
+ ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
+ return packageUtils?.getGhVersionName() + "traffic_download_hint"
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt
similarity index 93%
rename from app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt
index 917172306e..04ffee3f01 100644
--- a/app/src/main/java/com/gh/gamecenter/NetworkDiagnosisActivity.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/NetworkDiagnosisActivity.kt
@@ -1,4 +1,4 @@
-package com.gh.gamecenter
+package com.gh.gamecenter.setting.view
import android.annotation.SuppressLint
import android.graphics.Bitmap
@@ -17,12 +17,16 @@ import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.ScrollView
import android.widget.TextView
+import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.common.util.*
-import com.gh.gamecenter.common.utils.DialogHelper
-import com.gh.gamecenter.common.utils.tryCatchInRelease
-import com.gh.gamecenter.common.utils.DeviceUtils
+import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.retrofit.Response
+import com.gh.gamecenter.common.utils.DeviceUtils
+import com.gh.gamecenter.common.utils.DialogHelper
+import com.gh.gamecenter.common.utils.copyTextAndToast
+import com.gh.gamecenter.common.utils.tryCatchInRelease
+import com.gh.gamecenter.core.provider.IDirectProvider
+import com.gh.gamecenter.setting.R
import io.reactivex.Observable
import io.reactivex.ObservableOnSubscribe
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -235,9 +239,11 @@ class NetworkDiagnosisActivity : ToolBarActivity() {
mSuggestBtn.run {
visibility = View.VISIBLE
setOnClickListener {
- DirectUtils.directToSuggestion(
- context = this@NetworkDiagnosisActivity,
- diagnosis = builder.toString().replace(mSuccessHint, "")
+ val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils)
+ .navigation() as? IDirectProvider
+ directUtils?.directToSuggestionFromDiagnosis(
+ this@NetworkDiagnosisActivity,
+ builder.toString().replace(mSuccessHint, "")
)
}
}
@@ -250,7 +256,7 @@ class NetworkDiagnosisActivity : ToolBarActivity() {
}
override fun onClick(widget: View) {
- CommentUtils.copyText(builder.toString().replace(mSuccessHint, ""), applicationContext)
+ builder.toString().replace(mSuccessHint, "").copyTextAndToast("复制成功")
}
}, builder.length - mSuccessHint.length, builder.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingActivity.kt
similarity index 84%
rename from app/src/main/java/com/gh/gamecenter/SettingActivity.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingActivity.kt
index 9e82b78ab8..2c4824d1cf 100644
--- a/app/src/main/java/com/gh/gamecenter/SettingActivity.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingActivity.kt
@@ -1,4 +1,4 @@
-package com.gh.gamecenter
+package com.gh.gamecenter.setting.view
import android.content.Context
import android.content.Intent
@@ -6,7 +6,7 @@ import android.os.Bundle
import com.gh.gamecenter.common.base.activity.ToolBarActivity
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.common.utils.updateStatusBarColor
-import com.halo.assistant.fragment.SettingsFragment
+import com.gh.gamecenter.setting.R
class SettingActivity : ToolBarActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@@ -21,6 +21,10 @@ class SettingActivity : ToolBarActivity() {
updateStatusBarColor(R.color.background_white, R.color.background_white)
}
+ override fun provideNormalIntent(): Intent {
+ return getTargetIntent(this, SettingActivity::class.java, SettingsFragment::class.java)
+ }
+
companion object {
fun getIntent(context: Context, isUpdate: Boolean, entrance: String): Intent {
return getTargetIntent(
diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt
similarity index 74%
rename from app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt
index b4f06b1eca..3ce9828a30 100644
--- a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/SettingsFragment.kt
@@ -1,4 +1,4 @@
-package com.halo.assistant.fragment
+package com.gh.gamecenter.setting.view
import android.annotation.SuppressLint
import android.app.AlertDialog
@@ -18,41 +18,33 @@ import android.widget.TextView
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModelProvider
-import com.gh.common.constant.Config
-import com.gh.common.history.HistoryHelper
-import com.gh.common.util.*
-import com.gh.common.util.DialogUtils
-import com.gh.common.util.NewLogUtils
-import com.gh.download.server.BrowserInstallHelper
-import com.gh.gamecenter.*
+import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.BuildConfig
+import com.gh.gamecenter.common.base.activity.BaseActivity
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
-import com.gh.gamecenter.common.callback.ConfirmListener
+import com.gh.gamecenter.common.constant.Config
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.eventbus.EBReuse
import com.gh.gamecenter.common.retrofit.ApiResponse
import com.gh.gamecenter.common.utils.*
+import com.gh.gamecenter.core.provider.*
import com.gh.gamecenter.core.runOnIoThread
import com.gh.gamecenter.core.utils.DisplayUtils
import com.gh.gamecenter.core.utils.EmptyCallback
import com.gh.gamecenter.core.utils.GsonUtils
import com.gh.gamecenter.core.utils.SPUtils
-import com.gh.gamecenter.databinding.FragmentSettingBinding
-import com.gh.gamecenter.energy.EnergyBridge
-import com.gh.gamecenter.entity.WechatConfigEntity
-import com.gh.gamecenter.fragment.MainWrapperFragment
-import com.gh.gamecenter.game.upload.GameSubmissionActivity
import com.gh.gamecenter.login.entity.UserInfoEntity
import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.login.user.UserRepository
import com.gh.gamecenter.login.user.UserViewModel
import com.gh.gamecenter.login.utils.LoginUtils
-import com.gh.gamecenter.security.SecurityActivity
-import com.gh.gamecenter.setting.GameDownloadSettingActivity
-import com.gh.gamecenter.setting.VideoSettingActivity
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentSettingBinding
+import com.gh.gamecenter.setting.entity.WechatConfigEntity
+import com.gh.gamecenter.setting.view.security.SecurityActivity
import com.gh.gid.GidHelper
-import com.halo.assistant.HaloApp
import com.lightgame.download.FileUtils
import com.lightgame.utils.Utils
import io.reactivex.Observable
@@ -90,16 +82,18 @@ class SettingsFragment : ToolbarFragment() {
mBinding.aboutItem.contentTv.setBackgroundResource(R.drawable.message_unread_hint)
} else {
// Jenkins 打的包附带个打包时间在版本后面
+ val packageUtils = ARouter.getInstance().build(RouteConsts.provider.packageUtils).navigation() as? IPackageUtilsProvider
if (BuildConfig.BUILD_TIME == 0L) {
- mBinding.aboutItem.contentTv.text = "V" + PackageUtils.getGhVersionName()
+ mBinding.aboutItem.contentTv.text = "V" + packageUtils?.getGhVersionName()
} else {
mBinding.aboutItem.contentTv.text =
- "V" + PackageUtils.getGhVersionName() + " " + BuildConfig.BUILD_TIME
+ "V" + packageUtils?.getGhVersionName() + " " + BuildConfig.BUILD_TIME
}
if (PackageFlavorHelper.IS_TEST_FLAVOR == true) {
var channel = SPUtils.getString(Constants.SP_TEST_FLAVOR_CHANNEL)
if (channel == null || TextUtils.isEmpty(channel)) {
- channel = HaloApp.getInstance().channel
+ val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
+ channel = appProvider?.getChannel() ?: ""
}
mBinding.aboutItem.contentTv.text = "($channel)"
}
@@ -118,7 +112,8 @@ class SettingsFragment : ToolbarFragment() {
Config.fixHideFunction()
toast("修复成功")
EventBus.getDefault().post(EBReuse("Refresh"))
- MainActivity.skipToMainActivity(context, MainWrapperFragment.INDEX_HOME)
+ val mainActivity = ARouter.getInstance().build(RouteConsts.provider.mainActivity).navigation() as? IMainProvider
+ mainActivity?.skipToMainActivity(requireContext(), 0)
}
}
@@ -142,7 +137,8 @@ class SettingsFragment : ToolbarFragment() {
mUserViewModel.loginObsUserinfo.observe(this) { response: ApiResponse? ->
if (response != null && response.data != null) {
- WechatBindHelper.getWechatConfig {
+ val wechatBindHelper = ARouter.getInstance().build(RouteConsts.provider.wechatHelper).navigation() as? IWechatBindHelperProvider
+ wechatBindHelper?.getWechatConfig {
initWechatBindStatus()
}
} else {
@@ -181,9 +177,11 @@ class SettingsFragment : ToolbarFragment() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP_MR1) {
return
}
- if (UsageStatsHelper.checkForPermission() && SPUtils.getBoolean(UsageStatsHelper.USAGE_STATUS_SP_KEY, true)) {
+ val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper).navigation() as? IUsageStatsHelperProvider
+ if (usageStatsHelper?.checkForPermission() == true && SPUtils.getBoolean(USAGE_STATUS_SP_KEY, true)) {
mUsageStatus = true
- EnergyBridge.postEnergyTask("open_game_time")
+ val energyTaskHelper = ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation() as? IEnergyTaskProvider
+ energyTaskHelper?.postEnergyTask("open_game_time")
} else {
mUsageStatus = false
}
@@ -195,9 +193,7 @@ class SettingsFragment : ToolbarFragment() {
titleTv.text = getString(R.string.setting_security)
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- CheckLoginUtils.checkLogin(
- context, "设置-账号与安全-请先登录"
- ) {
+ ifLogin("设置-账号与安全-请先登录") {
startActivityForResult(
SecurityActivity.getIntent(
requireContext(),
@@ -209,7 +205,8 @@ class SettingsFragment : ToolbarFragment() {
}
}
mBinding.systemDarkModeItem.run {
- root.goneIf(!(Config.getNightModeSetting()?.setting ?: false)) {
+ val config = ARouter.getInstance().build(RouteConsts.provider.config).navigation() as? IConfigProvider
+ root.goneIf(!(config?.getNightModeSetting() ?: false)) {
titleTv.text = getString(R.string.setting_system_dark_mode)
switchLottie.visibility = View.VISIBLE
switchLottie.setSwitchAnimation(DarkModeUtils.isFollowSystemDarkModeFromSp())
@@ -243,14 +240,14 @@ class SettingsFragment : ToolbarFragment() {
titleTv.text = getString(R.string.setting_game_submission)
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- CheckLoginUtils.checkLogin(
- context, "设置-游戏投稿-请先登录"
- ) {
+ ifLogin("设置-游戏投稿-请先登录") {
PermissionHelper.checkStoragePermissionBeforeAction(
requireContext(),
object : EmptyCallback {
override fun onCallback() {
- startActivity(GameSubmissionActivity.getIntent(requireContext(), mEntrance, "游戏上传"))
+ ARouter.getInstance().build(RouteConsts.activity.gameSubmissionActivity)
+ .withString(EntranceConsts.KEY_ENTRANCE, BaseActivity.mergeEntranceAndPath(mEntrance, "游戏上传"))
+ .navigation()
}
})
}
@@ -265,28 +262,28 @@ class SettingsFragment : ToolbarFragment() {
switchLottie.visibility = View.VISIBLE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
root.setOnClickListener {
- if (UsageStatsHelper.checkForPermission()) {
+ val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper).navigation() as? IUsageStatsHelperProvider
+ if (usageStatsHelper?.checkForPermission() == true) {
DialogHelper.showDialog(requireContext(), "提示",
"关闭后将无法统计游戏时长,确定要关闭吗?",
"确定关闭",
"暂不关闭",
{
- UsageStatsHelper.skipToUsageStats(
+ usageStatsHelper.skipToUsageStats(
requireContext(),
- UsageStatsHelper.USAGE_STATUS_REQUEST_CODE
+ USAGE_STATUS_REQUEST_CODE
)
}, {}, DialogHelper.Config(centerContent = true, centerTitle = true)
)
} else {
- DialogUtils.showUsageStatsDialog(
- requireContext(), object : ConfirmListener {
- override fun onConfirm() {
- UsageStatsHelper.skipToUsageStats(
- requireContext(),
- UsageStatsHelper.USAGE_STATUS_REQUEST_CODE
- )
- }
- }, null
+ val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
+ dialogUtils?.showUsageStatsDialog(
+ requireContext(), {
+ usageStatsHelper?.skipToUsageStats(
+ requireContext(),
+ USAGE_STATUS_REQUEST_CODE
+ )
+ }, {}
)
}
}
@@ -300,11 +297,12 @@ class SettingsFragment : ToolbarFragment() {
val json = SPUtils.getString(Constants.SP_WECHAT_CONFIG)
val entity = GsonUtils.fromJson(json, WechatConfigEntity::class.java)
if (entity != null) {
- NewLogUtils.logWechatRemindConfigClick(entity)
+ NewLogUtils.logWechatRemindConfigClick(entity.bind, entity.follow, entity.notice)
}
- requireContext().startActivity(WebActivity.getBindWechatIntent(requireContext()))
+ val webActivity = ARouter.getInstance().build(RouteConsts.provider.webActivity).navigation() as? IWebProvider
+ requireContext().startActivity(webActivity?.getBindWechatIntent(requireContext()))
} else {
- CheckLoginUtils.checkLogin(requireContext(), "我的光环_设置") {}
+ ifLogin("我的光环_设置") {}
}
}
}
@@ -318,7 +316,8 @@ class SettingsFragment : ToolbarFragment() {
//这种方案适用于 API 26, 即8.0(含8.0)以上可以用
val notifyIntent = Intent()
notifyIntent.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
- notifyIntent.putExtra(Settings.EXTRA_APP_PACKAGE, com.gh.gamecenter.BuildConfig.APPLICATION_ID)
+ val buildConfig = ARouter.getInstance().build(RouteConsts.provider.buildConfig).navigation() as? IBuildConfigProvider
+ notifyIntent.putExtra(Settings.EXTRA_APP_PACKAGE, buildConfig?.getApplicationId())
startActivity(notifyIntent)
} else {
PermissionHelper.toPermissionSetting(requireActivity())
@@ -362,8 +361,10 @@ class SettingsFragment : ToolbarFragment() {
DialogHelper.showCenterWarningDialog(requireContext(), "清除缓存", "确定要清除缓存吗?",
object : EmptyCallback {
override fun onCallback() {
- loadingDialog = DialogUtils.showWaitDialog(context, "清除缓存中...")
- HistoryHelper.emptyDatabase()
+ val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
+ loadingDialog = dialogUtils?.showWaitDialog(requireContext(), "清除缓存中...")
+ val historyHelper = ARouter.getInstance().build(RouteConsts.provider.historyHelper).navigation() as? IHistoryHelperProvider
+ historyHelper?.emptyDatabase()
clearCache()
}
})
@@ -385,18 +386,17 @@ class SettingsFragment : ToolbarFragment() {
}
}
mBinding.settingLogout.setOnClickListener {
- DialogUtils.showForceDialog(
- context, "退出登录", "退出账号即会回到游客状态,很多功能将无法使用(例如评论、客服消息),确定退出吗?",
- "确定退出", "取消", object : ConfirmListener {
- override fun onConfirm() {
- loadingDialog = DialogUtils.showWaitDialog(context, "退出登录中...")
- LoginUtils.logout {
- UserRepository.getInstance().logout()
- if (loadingDialog != null) loadingDialog!!.dismiss()
- if (activity != null) requireActivity().finish()
- }
+ val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
+ dialogUtils?.showForceDialog(
+ requireContext(), "退出登录", "退出账号即会回到游客状态,很多功能将无法使用(例如评论、客服消息),确定退出吗?",
+ "确定退出", "取消", {
+ loadingDialog = dialogUtils.showWaitDialog(requireContext(), "退出登录中...")
+ LoginUtils.logout {
+ UserRepository.getInstance().logout()
+ if (loadingDialog != null) loadingDialog!!.dismiss()
+ if (activity != null) requireActivity().finish()
}
- }, null
+ }, {}
)
}
}
@@ -415,7 +415,8 @@ class SettingsFragment : ToolbarFragment() {
val editText = EditText(context)
var channel = SPUtils.getString(Constants.SP_TEST_FLAVOR_CHANNEL)
if (channel == null || TextUtils.isEmpty(channel)) {
- channel = HaloApp.getInstance().channel
+ val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
+ channel = appProvider?.getChannel() ?: ""
SPUtils.setString(Constants.SP_TEST_FLAVOR_CHANNEL, channel)
}
editText.setText(channel, TextView.BufferType.EDITABLE)
@@ -433,7 +434,8 @@ class SettingsFragment : ToolbarFragment() {
inputDialog.setPositiveButton("确定") { _, _ ->
if (!TextUtils.isEmpty(editText.text)) {
SPUtils.setString(Constants.SP_TEST_FLAVOR_CHANNEL, editText.text.toString())
- HaloApp.getInstance().channel = editText.text.toString()
+ val appProvider = ARouter.getInstance().build(RouteConsts.provider.app).navigation() as? IAppProvider
+ appProvider?.setChannel(editText.text.toString())
}
}.show()
}
@@ -473,9 +475,13 @@ class SettingsFragment : ToolbarFragment() {
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
- if (requestCode == UsageStatsHelper.USAGE_STATUS_REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
- if (UsageStatsHelper.checkForPermission()) EnergyBridge.postEnergyTask("open_game_time")
- SPUtils.setBoolean(UsageStatsHelper.USAGE_STATUS_SP_KEY, UsageStatsHelper.checkForPermission())
+ if (requestCode == USAGE_STATUS_REQUEST_CODE && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
+ val usageStatsHelper = ARouter.getInstance().build(RouteConsts.provider.usageStatsHelper).navigation() as? IUsageStatsHelperProvider
+ if (usageStatsHelper?.checkForPermission() == true) {
+ val energyTaskHelper = ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation() as? IEnergyTaskProvider
+ energyTaskHelper?.postEnergyTask("open_game_time")
+ }
+ SPUtils.setBoolean(USAGE_STATUS_SP_KEY, usageStatsHelper?.checkForPermission() == true)
initUsageStats()
}
@@ -498,21 +504,19 @@ class SettingsFragment : ToolbarFragment() {
mBinding.notificationAuthorityItem.switchLottie.setSwitchAnimation(NotificationHelper.notificationIsEnable())
- if (BrowserInstallHelper.isUseBrowserToInstallEnabled()) {
- if (BrowserInstallHelper.shouldUseBrowserToInstall()) {
+ val browserInstallHelper = ARouter.getInstance().build(RouteConsts.provider.browserInstallHelper).navigation() as? IBrowserInstallHelperProvider
+ if (browserInstallHelper?.isUseBrowserToInstallEnabled() == true) {
+ if (browserInstallHelper.shouldUseBrowserToInstall()) {
mBinding.installMethodItem.textMoreTv.text = "浏览器安装"
} else {
mBinding.installMethodItem.textMoreTv.text = "助手安装"
}
mBinding.installMethodContainer.visibility = View.VISIBLE
mBinding.installMethodItem.root.setOnClickListener {
- val intent = ShellActivity.getIntent(
- requireContext(),
- ShellActivity.Type.SWITCH_INSTALL_METHOD,
- null
- )
+ val shellActivity = ARouter.getInstance().build(RouteConsts.provider.shellActivity).navigation() as? IShellProvider
+ val intent = shellActivity?.getSwitchInstallMethodIntent(requireContext(), null)
requireContext().startActivity(intent)
- BrowserInstallHelper.logOrdinaryBrowserEvent(BrowserInstallHelper.Type.SWITCH_INSTALL_SETTING)
+ browserInstallHelper.logSwitchInstallSettingEvent()
}
}
}
@@ -587,7 +591,8 @@ class SettingsFragment : ToolbarFragment() {
const val TRAFFIC_VIDEO_SP_KEY = "tranfficvideo"
const val FONT_SIZE_SP_KEY = "fontsize"
const val PERSONAL_RECOMMEND_SP_KEY = "personalrecommend"
-
+ const val USAGE_STATUS_SP_KEY = "usage_status_sp_key"
const val INSERT_MOBILE_CODE = 411
+ const val USAGE_STATUS_REQUEST_CODE = 233
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/VideoSettingActivity.kt
similarity index 94%
rename from app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/VideoSettingActivity.kt
index 6b0f3267c8..9e189ae0e6 100644
--- a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingActivity.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/VideoSettingActivity.kt
@@ -1,13 +1,13 @@
-package com.gh.gamecenter.setting
+package com.gh.gamecenter.setting.view
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.view.View
import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.gamecenter.R
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.common.utils.updateStatusBarColor
+import com.gh.gamecenter.setting.R
class VideoSettingActivity : ToolBarActivity() {
diff --git a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/VideoSettingFragment.kt
similarity index 98%
rename from app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/VideoSettingFragment.kt
index 032d7e2667..5d44a82a49 100644
--- a/app/src/main/java/com/gh/gamecenter/setting/VideoSettingFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/VideoSettingFragment.kt
@@ -1,14 +1,14 @@
-package com.gh.gamecenter.setting
+package com.gh.gamecenter.setting.view
import android.os.Bundle
import android.view.View
-import com.gh.gamecenter.R
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
import com.gh.gamecenter.common.constant.Constants
import com.gh.gamecenter.common.utils.setSwitchAnimation
import com.gh.gamecenter.common.utils.toColor
import com.gh.gamecenter.core.utils.SPUtils
-import com.gh.gamecenter.databinding.FragmentVideoSettingBinding
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentVideoSettingBinding
class VideoSettingFragment : ToolbarFragment() {
diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt
similarity index 94%
rename from app/src/main/java/com/gh/gamecenter/security/BindPhoneActivity.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt
index cffef17529..8ecfecdd37 100644
--- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneActivity.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneActivity.kt
@@ -1,15 +1,15 @@
-package com.gh.gamecenter.security
+package com.gh.gamecenter.setting.view.security
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.alibaba.android.arouter.facade.annotation.Route
import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.gamecenter.R
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.common.constant.RouteConsts
import com.gh.gamecenter.common.utils.updateStatusBarColor
-import com.gh.gamecenter.entity.ConflictUserEntity
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.entity.ConflictUserEntity
@Route(path = RouteConsts.activity.bindPhoneActivity)
class BindPhoneActivity : ToolBarActivity() {
diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneConflictFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneConflictFragment.kt
similarity index 94%
rename from app/src/main/java/com/gh/gamecenter/security/BindPhoneConflictFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneConflictFragment.kt
index 51bd051635..b6e6ecd5ed 100644
--- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneConflictFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneConflictFragment.kt
@@ -1,18 +1,18 @@
-package com.gh.gamecenter.security
+package com.gh.gamecenter.setting.view.security
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.PopupWindow
-import com.gh.gamecenter.R
-import com.gh.gamecenter.common.constant.EntranceConsts
-import com.gh.gamecenter.common.utils.dip2px
-import com.gh.gamecenter.common.utils.ImageUtils
-import com.gh.gamecenter.databinding.FragmentBindPhoneConflictBinding
-import com.gh.gamecenter.entity.ConflictUserEntity
-import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
+import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.utils.ImageUtils
+import com.gh.gamecenter.common.utils.dip2px
+import com.gh.gamecenter.login.user.UserManager
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentBindPhoneConflictBinding
+import com.gh.gamecenter.setting.entity.ConflictUserEntity
class BindPhoneConflictFragment : ToolbarFragment() {
diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt
similarity index 90%
rename from app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt
index 909fdb7308..993c07b540 100644
--- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneFragment.kt
@@ -1,4 +1,4 @@
-package com.gh.gamecenter.security
+package com.gh.gamecenter.setting.view.security
import android.app.Dialog
import android.content.Intent
@@ -6,19 +6,20 @@ import android.os.Bundle
import android.os.Message
import android.view.View
import androidx.lifecycle.Observer
-import com.gh.gamecenter.common.constant.Constants
-import com.gh.common.util.DialogUtils
-import com.gh.gamecenter.R
+import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.BuildConfig
import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.gamecenter.common.callback.ConfirmListener
-import com.gh.gamecenter.common.constant.EntranceConsts
-import com.gh.gamecenter.common.utils.*
-import com.gh.gamecenter.core.utils.*
-import com.gh.gamecenter.databinding.FragmentBindPhoneBinding
-import com.gh.gamecenter.login.user.UserManager
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
-import com.gh.gamecenter.energy.EnergyBridge
+import com.gh.gamecenter.common.constant.Constants
+import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.common.utils.*
+import com.gh.gamecenter.core.provider.IDialogUtilsProvider
+import com.gh.gamecenter.core.provider.IEnergyTaskProvider
+import com.gh.gamecenter.core.utils.*
+import com.gh.gamecenter.login.user.UserManager
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentBindPhoneBinding
import com.lightgame.utils.Utils
class BindPhoneFragment : ToolbarFragment() {
@@ -130,13 +131,15 @@ class BindPhoneFragment : ToolbarFragment() {
mViewModel.finishLiveData.observe(viewLifecycleOwner, Observer { isSuccess ->
if (isSuccess) {
// 上报光能任务
- EnergyBridge.postEnergyTask("bind_mobile")
+ val energyTaskHelper =
+ ARouter.getInstance().build(RouteConsts.provider.energyTask).navigation() as? IEnergyTaskProvider
+ energyTaskHelper?.postEnergyTask("bind_mobile")
// 已完成填写邀请码
val inviteCode = mBinding.bindPhoneInviteEt.text.toString().trim()
if (inviteCode.isNotBlank()) {
SPUtils.setBoolean(Constants.SP_HAS_COMPLETE_INVITE_CODE, true)
- EnergyBridge.postInviteCodeTask(inviteCode, "mobile_binding", {})
+ energyTaskHelper?.postInviteCodeTask(inviteCode, "mobile_binding") {}
}
// 更新本地用户已绑定手机的信息
@@ -241,15 +244,11 @@ class BindPhoneFragment : ToolbarFragment() {
mBinding.bindPhoneEt.text.toString().trim { it <= ' ' }.replace(" ".toRegex(), "")
// 更换手机号,当输入手机号和当前手机号相同则弹出提示
if (mChangePhone && phoneNum == oldPhoneNum) {
- DialogUtils.showNoticeDialog(
- requireContext(),
- null,
- getString(R.string.change_phone_same),
- object : ConfirmListener {
- override fun onConfirm() {
- mBinding.bindPhoneEt.setText("")
- }
- })
+ val dialogUtils = ARouter.getInstance().build(RouteConsts.provider.dialogUtils)
+ .navigation() as? IDialogUtilsProvider
+ dialogUtils?.showNoticeDialog(requireContext(), "", getString(R.string.change_phone_same)) {
+ mBinding.bindPhoneEt.setText("")
+ }
return
}
@@ -289,11 +288,11 @@ class BindPhoneFragment : ToolbarFragment() {
}
private fun showBindPhoneDialog() {
- mDialog = DialogUtils.showBindPhoneDialog(requireContext(), object : ConfirmListener {
- override fun onConfirm() {
- requireActivity().finish()
- }
- })
+ val dialogUtils =
+ ARouter.getInstance().build(RouteConsts.provider.dialogUtils).navigation() as? IDialogUtilsProvider
+ mDialog = dialogUtils?.showBindPhoneDialog(requireContext()) {
+ requireActivity().finish()
+ }
}
override fun onStop() {
diff --git a/app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneViewModel.kt
similarity index 98%
rename from app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneViewModel.kt
index 6a5b27dae1..f69e80a6f1 100644
--- a/app/src/main/java/com/gh/gamecenter/security/BindPhoneViewModel.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/BindPhoneViewModel.kt
@@ -1,17 +1,17 @@
-package com.gh.gamecenter.security
+package com.gh.gamecenter.setting.view.security
import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.MutableLiveData
+import com.gh.gamecenter.common.retrofit.BiResponse
import com.gh.gamecenter.common.utils.DeviceUtils
import com.gh.gamecenter.core.utils.GsonUtils
import com.gh.gamecenter.core.utils.ToastUtils
-import com.gh.gamecenter.entity.ConflictUserEntity
-import com.gh.gamecenter.common.retrofit.BiResponse
import com.gh.gamecenter.login.utils.LoginUtils
-import com.gh.gamecenter.retrofit.RetrofitManager
+import com.gh.gamecenter.setting.entity.ConflictUserEntity
+import com.gh.gamecenter.setting.retrofit.RetrofitManager
import com.lightgame.utils.Utils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
diff --git a/app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityActivity.kt
similarity index 94%
rename from app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityActivity.kt
index 38f6b0434b..09b8c100b5 100644
--- a/app/src/main/java/com/gh/gamecenter/security/SecurityActivity.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityActivity.kt
@@ -1,12 +1,12 @@
-package com.gh.gamecenter.security
+package com.gh.gamecenter.setting.view.security
import android.content.Context
import android.content.Intent
import android.os.Bundle
import com.gh.gamecenter.common.base.activity.ToolBarActivity
-import com.gh.gamecenter.R
import com.gh.gamecenter.common.constant.EntranceConsts
import com.gh.gamecenter.common.utils.updateStatusBarColor
+import com.gh.gamecenter.setting.R
class SecurityActivity : ToolBarActivity() {
diff --git a/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt
similarity index 76%
rename from app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt
rename to module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt
index 2e712fb218..d2b1fe883f 100644
--- a/app/src/main/java/com/gh/gamecenter/security/SecurityFragment.kt
+++ b/module_setting/src/main/java/com/gh/gamecenter/setting/view/security/SecurityFragment.kt
@@ -1,16 +1,19 @@
-package com.gh.gamecenter.security
+package com.gh.gamecenter.setting.view.security
import android.content.Intent
import android.os.Bundle
import android.view.View
-import com.gh.gamecenter.common.constant.Constants
-import com.gh.common.util.DirectUtils
-import com.gh.gamecenter.common.utils.EnvHelper
-import com.gh.gamecenter.R
-import com.gh.gamecenter.databinding.FragmentSecurityBinding
-import com.gh.gamecenter.common.eventbus.EBReuse
-import com.gh.gamecenter.login.user.UserManager
+import com.alibaba.android.arouter.launcher.ARouter
import com.gh.gamecenter.common.base.fragment.ToolbarFragment
+import com.gh.gamecenter.common.constant.Constants
+import com.gh.gamecenter.common.constant.EntranceConsts
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.common.eventbus.EBReuse
+import com.gh.gamecenter.common.utils.EnvHelper
+import com.gh.gamecenter.core.provider.IDirectProvider
+import com.gh.gamecenter.login.user.UserManager
+import com.gh.gamecenter.setting.R
+import com.gh.gamecenter.setting.databinding.FragmentSecurityBinding
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
@@ -40,8 +43,9 @@ class SecurityFragment : ToolbarFragment() {
}
private fun initView() {
+ val directUtils = ARouter.getInstance().build(RouteConsts.provider.directUtils).navigation() as? IDirectProvider
mBinding.securityContact.setOnClickListener {
- DirectUtils.directToQqConversation(requireContext(), "800177318")
+ directUtils?.directToQqConversation(requireContext(), "800177318")
}
if (arguments?.getString(DISPLAY_TYPE) == DisplayType.DEFAULT.value) {
mBinding.registerWayItem.run {
@@ -57,9 +61,9 @@ class SecurityFragment : ToolbarFragment() {
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
if (EnvHelper.isDevEnv) {
- DirectUtils.directToWebView(requireContext(), Constants.LOGOUT_ADDRESS_DEV, mEntrance)
+ directUtils?.directToWebView(requireContext(), Constants.LOGOUT_ADDRESS_DEV, mEntrance)
} else {
- DirectUtils.directToWebView(requireContext(), Constants.LOGOUT_ADDRESS, mEntrance)
+ directUtils?.directToWebView(requireContext(), Constants.LOGOUT_ADDRESS, mEntrance)
}
}
}
@@ -70,17 +74,10 @@ class SecurityFragment : ToolbarFragment() {
titleTv.text = getString(R.string.bind_phone_key)
textMoreTv.visibility = View.VISIBLE
root.setOnClickListener {
- if (UserManager.getInstance().userInfoEntity?.loginMobile.isNullOrEmpty()) {
- startActivityForResult(
- BindPhoneActivity.getNormalIntent(requireContext(), false),
- INSERT_MOBILE_CODE
- )
- } else {
- startActivityForResult(
- BindPhoneActivity.getNormalIntent(requireContext(), true),
- INSERT_MOBILE_CODE
- )
- }
+ ARouter.getInstance().build(RouteConsts.activity.bindPhoneActivity)
+ .withBoolean(EntranceConsts.KEY_FROM_LOGIN, false)
+ .withBoolean(EntranceConsts.KEY_CHANGE_PHONE, !UserManager.getInstance().userInfoEntity?.loginMobile.isNullOrEmpty())
+ .navigation(requireActivity(), INSERT_MOBILE_CODE)
}
}
mBinding.safeCenterItem.run {
diff --git a/module_setting/src/main/manifest/AndroidManifest.xml b/module_setting/src/main/manifest/AndroidManifest.xml
new file mode 100644
index 0000000000..feb8fe33a2
--- /dev/null
+++ b/module_setting/src/main/manifest/AndroidManifest.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/drawable-night/icon_more.xml b/module_setting/src/main/res/drawable-night/icon_more.xml
new file mode 100644
index 0000000000..e961c16f9d
--- /dev/null
+++ b/module_setting/src/main/res/drawable-night/icon_more.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable-xxhdpi/bg_doubt.webp b/module_setting/src/main/res/drawable-xxhdpi/bg_doubt.webp
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/bg_doubt.webp
rename to module_setting/src/main/res/drawable-xxhdpi/bg_doubt.webp
diff --git a/app/src/main/res/drawable-xxhdpi/icon_doubt.png b/module_setting/src/main/res/drawable-xxhdpi/icon_doubt.png
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/icon_doubt.png
rename to module_setting/src/main/res/drawable-xxhdpi/icon_doubt.png
diff --git a/app/src/main/res/drawable-xxhdpi/icon_doubt_gray.webp b/module_setting/src/main/res/drawable-xxhdpi/icon_doubt_gray.webp
similarity index 100%
rename from app/src/main/res/drawable-xxhdpi/icon_doubt_gray.webp
rename to module_setting/src/main/res/drawable-xxhdpi/icon_doubt_gray.webp
diff --git a/app/src/main/res/drawable-xxxhdpi/bg_doubt.webp b/module_setting/src/main/res/drawable-xxxhdpi/bg_doubt.webp
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/bg_doubt.webp
rename to module_setting/src/main/res/drawable-xxxhdpi/bg_doubt.webp
diff --git a/module_setting/src/main/res/drawable-xxxhdpi/ic_setting_switch_off.webp b/module_setting/src/main/res/drawable-xxxhdpi/ic_setting_switch_off.webp
new file mode 100644
index 0000000000..db59c3a9a2
Binary files /dev/null and b/module_setting/src/main/res/drawable-xxxhdpi/ic_setting_switch_off.webp differ
diff --git a/module_setting/src/main/res/drawable-xxxhdpi/ic_setting_switch_on.webp b/module_setting/src/main/res/drawable-xxxhdpi/ic_setting_switch_on.webp
new file mode 100644
index 0000000000..05d4f807fb
Binary files /dev/null and b/module_setting/src/main/res/drawable-xxxhdpi/ic_setting_switch_on.webp differ
diff --git a/app/src/main/res/drawable-xxxhdpi/icon_doubt.png b/module_setting/src/main/res/drawable-xxxhdpi/icon_doubt.png
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/icon_doubt.png
rename to module_setting/src/main/res/drawable-xxxhdpi/icon_doubt.png
diff --git a/app/src/main/res/drawable-xxxhdpi/icon_doubt_gray.webp b/module_setting/src/main/res/drawable-xxxhdpi/icon_doubt_gray.webp
similarity index 100%
rename from app/src/main/res/drawable-xxxhdpi/icon_doubt_gray.webp
rename to module_setting/src/main/res/drawable-xxxhdpi/icon_doubt_gray.webp
diff --git a/module_setting/src/main/res/drawable/button_border_blue_oval.xml b/module_setting/src/main/res/drawable/button_border_blue_oval.xml
new file mode 100644
index 0000000000..36a9716d72
--- /dev/null
+++ b/module_setting/src/main/res/drawable/button_border_blue_oval.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/drawable/ic_selector_default.xml b/module_setting/src/main/res/drawable/ic_selector_default.xml
new file mode 100644
index 0000000000..edc57afcbf
--- /dev/null
+++ b/module_setting/src/main/res/drawable/ic_selector_default.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/module_setting/src/main/res/drawable/ic_selector_selected.xml b/module_setting/src/main/res/drawable/ic_selector_selected.xml
new file mode 100644
index 0000000000..3a3a851d57
--- /dev/null
+++ b/module_setting/src/main/res/drawable/ic_selector_selected.xml
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/module_setting/src/main/res/drawable/icon_more.xml b/module_setting/src/main/res/drawable/icon_more.xml
new file mode 100644
index 0000000000..5efd89f935
--- /dev/null
+++ b/module_setting/src/main/res/drawable/icon_more.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/module_setting/src/main/res/drawable/message_unread_hint.xml b/module_setting/src/main/res/drawable/message_unread_hint.xml
new file mode 100644
index 0000000000..e85952fd0f
--- /dev/null
+++ b/module_setting/src/main/res/drawable/message_unread_hint.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/drawable/oval_message_hint_bg.xml b/module_setting/src/main/res/drawable/oval_message_hint_bg.xml
new file mode 100644
index 0000000000..e987c9e0f8
--- /dev/null
+++ b/module_setting/src/main/res/drawable/oval_message_hint_bg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/drawable/selector_ic_setting_switch.xml b/module_setting/src/main/res/drawable/selector_ic_setting_switch.xml
new file mode 100644
index 0000000000..03a4068394
--- /dev/null
+++ b/module_setting/src/main/res/drawable/selector_ic_setting_switch.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_network_diagnosis.xml b/module_setting/src/main/res/layout/activity_network_diagnosis.xml
similarity index 100%
rename from app/src/main/res/layout/activity_network_diagnosis.xml
rename to module_setting/src/main/res/layout/activity_network_diagnosis.xml
diff --git a/app/src/main/res/layout/dialog_conflict_guide.xml b/module_setting/src/main/res/layout/dialog_conflict_guide.xml
similarity index 100%
rename from app/src/main/res/layout/dialog_conflict_guide.xml
rename to module_setting/src/main/res/layout/dialog_conflict_guide.xml
diff --git a/app/src/main/res/layout/fragment_about.xml b/module_setting/src/main/res/layout/fragment_about.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_about.xml
rename to module_setting/src/main/res/layout/fragment_about.xml
diff --git a/app/src/main/res/layout/fragment_bind_phone.xml b/module_setting/src/main/res/layout/fragment_bind_phone.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_bind_phone.xml
rename to module_setting/src/main/res/layout/fragment_bind_phone.xml
diff --git a/app/src/main/res/layout/fragment_bind_phone_conflict.xml b/module_setting/src/main/res/layout/fragment_bind_phone_conflict.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_bind_phone_conflict.xml
rename to module_setting/src/main/res/layout/fragment_bind_phone_conflict.xml
diff --git a/app/src/main/res/layout/fragment_game_download_setting.xml b/module_setting/src/main/res/layout/fragment_game_download_setting.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_game_download_setting.xml
rename to module_setting/src/main/res/layout/fragment_game_download_setting.xml
diff --git a/app/src/main/res/layout/fragment_security.xml b/module_setting/src/main/res/layout/fragment_security.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_security.xml
rename to module_setting/src/main/res/layout/fragment_security.xml
diff --git a/app/src/main/res/layout/fragment_setting.xml b/module_setting/src/main/res/layout/fragment_setting.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_setting.xml
rename to module_setting/src/main/res/layout/fragment_setting.xml
diff --git a/app/src/main/res/layout/fragment_video_setting.xml b/module_setting/src/main/res/layout/fragment_video_setting.xml
similarity index 100%
rename from app/src/main/res/layout/fragment_video_setting.xml
rename to module_setting/src/main/res/layout/fragment_video_setting.xml
diff --git a/module_setting/src/main/res/layout/layout_setting_item.xml b/module_setting/src/main/res/layout/layout_setting_item.xml
new file mode 100644
index 0000000000..175a2ff414
--- /dev/null
+++ b/module_setting/src/main/res/layout/layout_setting_item.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/layout/layout_setting_title_item.xml b/module_setting/src/main/res/layout/layout_setting_title_item.xml
new file mode 100644
index 0000000000..3884a1d8f3
--- /dev/null
+++ b/module_setting/src/main/res/layout/layout_setting_title_item.xml
@@ -0,0 +1,12 @@
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/layout/piece_setting_divider.xml b/module_setting/src/main/res/layout/piece_setting_divider.xml
new file mode 100644
index 0000000000..45ce215a32
--- /dev/null
+++ b/module_setting/src/main/res/layout/piece_setting_divider.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/module_setting/src/main/res/mipmap-xxxhdpi/logo_for_in_app_display.webp b/module_setting/src/main/res/mipmap-xxxhdpi/logo_for_in_app_display.webp
new file mode 100644
index 0000000000..289b419873
Binary files /dev/null and b/module_setting/src/main/res/mipmap-xxxhdpi/logo_for_in_app_display.webp differ
diff --git a/module_setting/src/main/res/values/strings.xml b/module_setting/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..d3969eedef
--- /dev/null
+++ b/module_setting/src/main/res/values/strings.xml
@@ -0,0 +1,64 @@
+
+ 设置
+ 新版本
+ 账号与安全
+ 深色模式跟随系统切换
+ 视频播放
+ 游戏下载
+ 一键修复
+ 下载完成自动安装游戏
+ 安装完成自动关注游戏
+ 切换安装方式
+ 微信提醒
+ 非Wi-Fi环境下载游戏提醒
+ 统计游戏时长
+ 通知权限
+ 开启后你可以及时收到重要通知
+ 个性化推荐
+ 开启功能后,您在本应用的使用信息(如下载信息),将用于个性化内容推荐,以提升您在本应用的体验
+ …/gh-files
+ …/pictures/ghzhushou
+ 游戏下载目录
+ 图片保存目录
+ 清除缓存
+ 0.0M
+ 关于我们
+ 关于我们(长按可更改渠道号)
+ 安装包清理
+ 游戏投稿
+ 设置
+ 注册方式
+ 还有其他问题?
+ 联系客服
+ 账户安全中心
+ 任何网络下都自动播放
+ 仅WIFI条件下自动播放
+ 关闭自动播放
+ 默认静音播放视频
+ 开启后以上位置的视频均默认静音播放
+ 已是最新版本
+ 关于
+ Copyright %1$s GHZhuShou Team All Rights Reserved.
+ https://v.douyin.com/C9UHr6/
+ 版本更新
+ 提交反馈
+ 跳过
+ 绑定手机
+ 绑定手机号
+ 更换手机号
+ 绑定手机后手机号将用于光环助手活动奖励领取、安全验证等用途
+ 下一步
+ 完成
+ 手机号绑定冲突
+ 遇到冲突如何换绑
+ 1、请先退出当前号【我的光环--设置--退出账号】
+ 2、再重新登录冲突号,在【我的光环--账户安全】\n或【我的光环--设置--账户安全】更换手机号
+ 3、冲突号成功更换新手机号后,再退出冲突号,\n并重新登录当前号进行绑定
+ 当前号
+ 冲突号
+ 换个手机号试试
+ 取消绑定
+ 更换手机号
+ 新手机号与当前手机号相同,暂不支持本\n次绑定
+ 我知道了
+
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java b/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java
new file mode 100644
index 0000000000..e00111bd60
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/DataUtils.java
@@ -0,0 +1,66 @@
+package com.gh.gamecenter.setting;
+
+import android.app.Application;
+import android.content.Context;
+import com.gh.gamecenter.core.AppExecutor;
+import com.lightgame.config.CommonDebug;
+
+import io.sentry.Sentry;
+import io.sentry.android.core.SentryAndroid;
+
+/**
+ * Created by LGT on 2016/6/15.
+ * 数据收集 工具类 (TalkingData、MTA)
+ */
+public class DataUtils {
+
+ private DataUtils() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ /**
+ * 初始化各种统计工具,仅在release build(非debug)模式启用统计
+ */
+ public static void init(final Application context, String channel) {
+ if (CommonDebug.IS_DEBUG) {
+ return;
+ }
+
+ // 初始化 Sentry 约占用 90ms,这里切换到子线程初始化
+ AppExecutor.getIoExecutor().execute(() -> initSentry(context, channel));
+ }
+
+ private static void initSentry(Context context, String channel) {
+ SentryAndroid.init(context, options -> {
+ // Sentry 疯狂报 ANR (很大一部分还是莫名奇妙的 ANR)严重影响到其它闪退日志的收集
+ // 这里将它局限到只有官网渠道的包才统计 ANR
+ if ("GH_206".equals(channel) || "GH_BETA".equals(channel)) {
+ options.setAnrEnabled(true);
+ options.setAnrTimeoutIntervalMillis(6000);
+ } else {
+ options.setAnrEnabled(false);
+ }
+
+ options.setDebug(BuildConfig.DEBUG);
+ options.setEnableSessionTracking(true);
+ options.setDsn("https://6b1caf0d17c1408e8680f3f73ff80bd0@sentry.shanqu.cc/22");
+
+ options.setBeforeSend((event, hint) -> {
+ if (BuildConfig.DEBUG) {
+ return null;
+ } else {
+ return event;
+ }
+ });
+ });
+
+ Sentry.configureScope(scope -> {
+ if (com.gh.gamecenter.common.BuildConfig.BUILD_TIME != 0L) {
+ scope.setTag("alias", "内测版" + BuildConfig.VERSION_NAME);
+ } else {
+ scope.setTag("alias", "正式版" + BuildConfig.VERSION_NAME);
+ scope.setTag("channel", channel);
+ }
+ });
+ }
+}
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt
new file mode 100644
index 0000000000..fa7fe431f6
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/SettingModuleApp.kt
@@ -0,0 +1,101 @@
+package com.gh.gamecenter.setting
+
+import android.os.Build
+import androidx.multidex.MultiDexApplication
+import com.alibaba.android.arouter.launcher.ARouter
+import com.facebook.animated.giflite.GifDecoder
+import com.facebook.common.logging.FLog
+import com.facebook.imageformat.DefaultImageFormats
+import com.facebook.imagepipeline.core.ImagePipelineConfig
+import com.facebook.imagepipeline.core.ImageTranscoderType
+import com.facebook.imagepipeline.core.MemoryChunkType
+import com.facebook.imagepipeline.decoder.ImageDecoderConfig
+import com.gh.gamecenter.common.image.EmptyDecoder
+import com.gh.gamecenter.common.utils.ImageUtils.disableAnimatedImage
+import com.gh.gamecenter.common.utils.ImageUtils.isFrescoInitialized
+import com.gh.gamecenter.common.utils.TimestampUtils
+import com.gh.gamecenter.core.iinterface.IApplication
+import com.github.piasy.biv.BigImageViewer
+import com.github.piasy.biv.loader.fresco.FrescoImageLoader
+import java.util.*
+
+class SettingModuleApp: MultiDexApplication() {
+
+ private val mApplicationList = ServiceLoader.load(IApplication::class.java, this.javaClass.classLoader)
+
+ override fun onCreate() {
+ super.onCreate()
+ initArouter()
+ mApp = this
+ for (application in mApplicationList) {
+ application.onCreate(this)
+ }
+ TimestampUtils.initMap()
+ initFresco()
+ DataUtils.init(this, "")
+ }
+
+ private fun initArouter() {
+ if (BuildConfig.DEBUG) { // 这两行必须写在init之前,否则这些配置在init过程中将无效
+ ARouter.openLog() // 打印日志
+ ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
+ }
+ ARouter.init(this) // 尽可能早,推荐在Application中初始化
+ }
+
+ fun initFresco() {
+ // 初始化 Fresco(BigImageViewer 已包含Fresco)
+ if (!isFrescoInitialized()) {
+ // 在 5.0 & 5.1 设备上 disable native code,原因是应用附带了 arm64 的 SO 以后在部分 5.0/5.1 设备
+ // 会出现找不到 arm64 so 的情况,具体可见
+ // https://sentry.ghzs.com/organizations/lightgame/issues/53107/
+ // 所以这里尝试在 5.0 & 5.1 设备上关闭 fresco 的 native 解码,应该会让 5.0 & 5.1 的设备 OOM 概率提高,但先试试效果
+ // 同时禁用动图
+ val pipelineConfigBuilder = ImagePipelineConfig.newBuilder(this)
+ val decodeConfigBuilder = ImageDecoderConfig.newBuilder()
+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP
+ || Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1
+ ) {
+ pipelineConfigBuilder.setMemoryChunkType(MemoryChunkType.BUFFER_MEMORY)
+ .setImageTranscoderType(ImageTranscoderType.JAVA_TRANSCODER)
+ decodeConfigBuilder.overrideDecoder(DefaultImageFormats.GIF, GifDecoder()).build()
+ val manufacture = Build.MANUFACTURER.lowercase(Locale.getDefault())
+
+ // OPPO 和 VIVO 的 5.1.1 设备还会去加载 WEBP_ANIMATED 的 SO,
+ // 实测没有发现有地方使用 WEBP_ANIMATED 的图片,这里用空占位图来替换 WEBP 动图
+ if ("oppo" == manufacture || "vivo" == manufacture) {
+ decodeConfigBuilder.overrideDecoder(
+ DefaultImageFormats.WEBP_ANIMATED,
+ EmptyDecoder()
+ ).build()
+ }
+ pipelineConfigBuilder
+ .setImageDecoderConfig(decodeConfigBuilder.build())
+ .experiment()
+ .setNativeCodeDisabled(true)
+
+ // 图片仅加载静态图片
+ disableAnimatedImage()
+ }
+ try {
+ BigImageViewer.initialize(
+ FrescoImageLoader.with(
+ this,
+ pipelineConfigBuilder.build()
+ )
+ )
+ } catch (e: Throwable) {
+ e.printStackTrace()
+ }
+ FLog.setMinimumLoggingLevel(FLog.VERBOSE)
+ }
+ }
+
+ companion object {
+ private lateinit var mApp: SettingModuleApp
+
+ fun getInstance(): SettingModuleApp {
+ return mApp
+ }
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt
new file mode 100644
index 0000000000..f07c60244d
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt
@@ -0,0 +1,59 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IAppProvider
+import com.gh.gamecenter.setting.HaloApp
+import com.gh.gamecenter.setting.R
+
+@Route(path = RouteConsts.provider.app, name = "Application暴露服务")
+class AppProviderImpl : IAppProvider {
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+
+ override fun getAppName(): String {
+ return HaloApp.getInstance().getString(R.string.app_name)
+ }
+
+ override fun getGid(): String {
+ return ""
+ }
+
+ override fun refreshGid() {
+ // Do nothing
+ }
+
+ override fun getOaid(): String {
+ return ""
+ }
+
+ override fun getChannel(): String {
+ return ""
+ }
+
+ override fun setChannel(channel: String) {
+ // Do nothing
+ }
+
+ override fun getUserAgent(): String {
+ return ""
+ }
+
+ override fun getServerUserMark(): String {
+ return ""
+ }
+
+ override fun getDeviceRamSize(): Long {
+ return 0L
+ }
+
+ override fun getTemporaryLocalDeviceId(): String {
+ return ""
+ }
+
+ override fun isUserAcceptPrivacyPolicy(context: Context): Boolean {
+ return true
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt
new file mode 100644
index 0000000000..07b4a485ba
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BrowserInstallHelperProviderImpl.kt
@@ -0,0 +1,27 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IBrowserInstallHelperProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.browserInstallHelper, name = "BrowserInstallHelper暴露服务")
+class BrowserInstallHelperProviderImpl : IBrowserInstallHelperProvider {
+ override fun isUseBrowserToInstallEnabled(): Boolean {
+ return false
+ }
+
+ override fun shouldUseBrowserToInstall(): Boolean {
+ return false
+ }
+
+ override fun logSwitchInstallSettingEvent() {
+ ToastUtils.toast("调用->BrowserInstallHelperProviderImpl.logSwitchInstallSettingEvent")
+ }
+
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt
new file mode 100644
index 0000000000..88474c2517
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/BuildConfigImpl.kt
@@ -0,0 +1,35 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IBuildConfigProvider
+import com.gh.gamecenter.setting.BuildConfig
+
+@Route(path = RouteConsts.provider.buildConfig, name = "BuildConfig暴露服务")
+class BuildConfigImpl : IBuildConfigProvider {
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+
+ override fun getApplicationId(): String = BuildConfig.APPLICATION_ID
+
+ override fun getVersionName(): String = BuildConfig.VERSION_NAME
+
+ override fun getExposureVersion(): String = ""
+
+ override fun isDebug(): Boolean = BuildConfig.DEBUG
+
+ override fun getApiHost(): String = BuildConfig.API_HOST
+
+ override fun getDevApiHost(): String = BuildConfig.DEV_API_HOST
+
+ override fun getNewApiHost(): String = ""
+
+ override fun getNewDevApiHost(): String = ""
+
+ override fun getVApiHost() = ""
+
+ override fun getVDevApiHost() = ""
+
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt
new file mode 100644
index 0000000000..3971315de3
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ConfigProviderImpl.kt
@@ -0,0 +1,81 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IConfigProvider
+
+@Route(path = RouteConsts.provider.config, name = "Config暴露服务")
+class ConfigProviderImpl : IConfigProvider {
+ override fun getTencentAppId(): String {
+ return ""
+ }
+
+ override fun getWechatAppId(): String {
+ return ""
+ }
+
+ override fun getWechatSecret(): String {
+ return ""
+ }
+
+ override fun getUploadLimitSize(): Long {
+ return 0L
+ }
+
+ override fun getSize(): Int {
+ return 0
+ }
+
+ override fun getRatio(): Int {
+ return 0
+ }
+
+ override fun getQuality(): Int {
+ return 0
+ }
+
+ override fun getGif(): String {
+ return ""
+ }
+
+ override fun getJpeg(): String {
+ return ""
+ }
+
+ override fun getWebp(): String {
+ return ""
+ }
+
+ override fun getGitThumb(): String {
+ return ""
+ }
+
+ override fun getGifWaterMark(): String {
+ return ""
+ }
+
+ override fun getQQ(): String {
+ return ""
+ }
+
+ override fun getQuickLoginAppId(): String {
+ return ""
+ }
+
+ override fun getQuickLoginAppKey(): String {
+ return ""
+ }
+
+ override fun getWeiboAppKey(): String {
+ return ""
+ }
+
+ override fun getNightModeSetting(): Boolean {
+ return false
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt
new file mode 100644
index 0000000000..01b8e2f5d1
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DataUtilsProviderImpl.kt
@@ -0,0 +1,18 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IDataUtilsProvider
+
+@Route(path = RouteConsts.provider.dataUtils, name = "DataUtils暴露服务")
+class DataUtilsProviderImpl : IDataUtilsProvider {
+
+ override fun getDeviceCertification() {
+ // Do nothing
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt
new file mode 100644
index 0000000000..de69bb849e
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DialogUtilsProviderImpl.kt
@@ -0,0 +1,54 @@
+package com.gh.gamecenter.setting.provider
+
+import android.app.Dialog
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IDialogUtilsProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.dialogUtils, name = "DialogUtils暴露服务")
+class DialogUtilsProviderImpl : IDialogUtilsProvider {
+ override fun showRegulationTestDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showRegulationTestDialog")
+ }
+
+ override fun showWaitDialog(context: Context, string: String): Dialog {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showWaitDialog")
+ return Dialog(context)
+ }
+
+ override fun showForceDialog(
+ context: Context,
+ title: String,
+ message: CharSequence,
+ positive: String,
+ negative: String,
+ confirm: () -> Unit,
+ cancel: () -> Unit
+ ) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showForceDialog")
+ }
+
+ override fun showUsageStatsDialog(context: Context, confirm: () -> Unit, cancel: () -> Unit) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showUsageStatsDialog")
+ }
+
+ override fun showNoticeDialog(
+ context: Context,
+ title: String,
+ content: String,
+ confirm: () -> Unit
+ ) {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showNoticeDialog")
+ }
+
+ override fun showBindPhoneDialog(context: Context, confirm: () -> Unit): Dialog {
+ ToastUtils.toast("调用->DialogUtilsProviderImpl.showBindPhoneDialog")
+ return Dialog(context)
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt
new file mode 100644
index 0000000000..9ae13a7eed
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/DirectProviderImpl.kt
@@ -0,0 +1,63 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IDirectProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.directUtils, name = "DirectUtils暴露服务")
+class DirectProviderImpl : IDirectProvider {
+
+ override fun directToWebView(context: Context, url: String, entrance: String?) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToWebView")
+ }
+
+ override fun directToRegulationTestPage(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToRegulationTestPage")
+ }
+
+ override fun directToQqConversation(context: Context, qq: String) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToQqConversation")
+ }
+
+ override fun directToCommodityDetail(context: Context, commodityId: String) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToCommodityDetail")
+ }
+
+ override fun directToEnergyRecord(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRecord")
+ }
+
+ override fun directToEnergyRulePage(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToEnergyRulePage")
+ }
+
+ override fun directToInviteFriends(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToInviteFriends")
+ }
+
+ override fun directToExchangeRulePage(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToExchangeRulePage")
+ }
+
+ override fun directToExchangeCommodityPage(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToExchangeCommodityPage")
+ }
+
+ override fun directToLotteryParadisePage(context: Context) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToLotteryParadisePage")
+ }
+
+ override fun directDouyin(context: Context, userId: String) {
+ ToastUtils.toast("调用->DirectProviderImpl.directDouyin")
+ }
+
+ override fun directToSuggestionFromDiagnosis(context: Context, diagnosis: String) {
+ ToastUtils.toast("调用->DirectProviderImpl.directToSuggestionFromDiagnosis")
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt
new file mode 100644
index 0000000000..dcafd2baad
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/HistoryHelperProviderImpl.kt
@@ -0,0 +1,18 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IHistoryHelperProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.historyHelper, name = "HistoryHelper暴露服务")
+class HistoryHelperProviderImpl : IHistoryHelperProvider {
+ override fun emptyDatabase() {
+ ToastUtils.toast("调用->HistoryHelperProviderImpl.emptyDatabase")
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/MainProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/MainProviderImpl.kt
new file mode 100644
index 0000000000..80572389e7
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/MainProviderImpl.kt
@@ -0,0 +1,18 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IMainProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.mainActivity, name = "MainActivity暴露服务")
+class MainProviderImpl : IMainProvider {
+ override fun skipToMainActivity(context: Context, position: Int) {
+ ToastUtils.toast("调用->MainProviderImpl.skipToMainActivity")
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt
new file mode 100644
index 0000000000..7faf92b48a
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/PackageUtilsProviderImpl.kt
@@ -0,0 +1,38 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import android.content.pm.PackageInfo
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IPackageUtilsProvider
+
+@Route(path = RouteConsts.provider.packageUtils, name = "PackageUtils暴露服务")
+class PackageUtilsProviderImpl : IPackageUtilsProvider {
+ override fun obtainProcessName(context: Context): String {
+ return ""
+ }
+
+ override fun getGhVersionName(): String {
+ return ""
+ }
+
+ override fun getGhVersionCode(): Int {
+ return 0
+ }
+
+ override fun getInstalledPackages(context: Context, flag: Int): List {
+ return emptyList()
+ }
+
+ override fun getApkSignatureByPackageName(context: Context, packageName: String): Array {
+ return emptyArray()
+ }
+
+ override fun getSideLoadedInfo(): MutableMap? {
+ return null
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt
new file mode 100644
index 0000000000..91a67b2a88
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/ShellProviderImpl.kt
@@ -0,0 +1,19 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import android.content.Intent
+import android.os.Parcelable
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IShellProvider
+
+@Route(path = RouteConsts.provider.shellActivity, name = "ShellActivity暴露服务")
+class ShellProviderImpl : IShellProvider {
+ override fun getSwitchInstallMethodIntent(context: Context, extraParcelable: Parcelable?): Intent? {
+ return null
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt
new file mode 100644
index 0000000000..d7332d0e40
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UpdateManagerProviderImpl.kt
@@ -0,0 +1,19 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import android.os.Handler
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IUpdateManagerProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.updateManager, name = "UpdateManager暴露服务")
+class UpdateManagerProviderImpl: IUpdateManagerProvider {
+ override fun checkUpdate(context: Context, isAutoCheck: Boolean, handler: Handler) {
+ ToastUtils.toast("调用->UpdateManagerProviderImpl.checkUpdate")
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt
new file mode 100644
index 0000000000..76477e9f0c
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/UsageStatsHelperProviderImpl.kt
@@ -0,0 +1,24 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import android.os.Build
+import androidx.annotation.RequiresApi
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IUsageStatsHelperProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.usageStatsHelper, name = "UsageStatsHelper暴露服务")
+class UsageStatsHelperProviderImpl : IUsageStatsHelperProvider {
+ @RequiresApi(Build.VERSION_CODES.LOLLIPOP_MR1)
+ override fun checkForPermission(): Boolean {
+ return false
+ }
+ override fun skipToUsageStats(context: Context, requestCode: Int) {
+ ToastUtils.toast("调用->UsageStatsHelperProviderImpl.skipToUsageStats")
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt
new file mode 100644
index 0000000000..aeb92417b3
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WebProviderImpl.kt
@@ -0,0 +1,30 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import android.content.Intent
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IWebProvider
+
+@Route(path = RouteConsts.provider.webActivity, name = "WebActivity暴露服务")
+class WebProviderImpl : IWebProvider {
+ override fun getIntent(context: Context, url: String, autoCompletionTitle: Boolean): Intent? {
+ return null
+ }
+
+ override fun getWebIntent(context: Context, title: String, url: String): Intent? {
+ return null
+ }
+
+ override fun getBindWechatIntent(context: Context): Intent? {
+ return null
+ }
+
+ override fun getSecurityCertificationIntent(context: Context): Intent? {
+ return null
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt
new file mode 100644
index 0000000000..1588308ddd
--- /dev/null
+++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/WechatHelperProviderImpl.kt
@@ -0,0 +1,18 @@
+package com.gh.gamecenter.setting.provider
+
+import android.content.Context
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.gh.gamecenter.common.constant.RouteConsts
+import com.gh.gamecenter.core.provider.IWechatBindHelperProvider
+import com.gh.gamecenter.core.utils.ToastUtils
+
+@Route(path = RouteConsts.provider.wechatHelper, name = "WechatHelper暴露服务")
+class WechatHelperProviderImpl : IWechatBindHelperProvider {
+ override fun getWechatConfig(callback: (() -> Unit)?) {
+ ToastUtils.toast("调用->WechatHelperProviderImpl.getWechatConfig")
+ }
+
+ override fun init(context: Context?) {
+ // Do nothing
+ }
+}
\ No newline at end of file
diff --git a/module_setting/src/test/java/com/gh/gamecenter/setting/ExampleUnitTest.kt b/module_setting/src/test/java/com/gh/gamecenter/setting/ExampleUnitTest.kt
new file mode 100644
index 0000000000..9496e9afc4
--- /dev/null
+++ b/module_setting/src/test/java/com/gh/gamecenter/setting/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.gh.gamecenter.setting
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/settings.gradle b/settings.gradle
index 858a5ca09b..f85223d42c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -7,3 +7,4 @@ include ':module_core'
include ':module_common'
include ':module_login'
include ':module_energy'
+include ':module_setting'