Skip to content

Commit 37b8ba6

Browse files
authored
Derive states from MainActivity alias enabled (#703)
1 parent 8453bfc commit 37b8ba6

File tree

4 files changed

+17
-12
lines changed

4 files changed

+17
-12
lines changed

app/src/main/java/com/github/kr328/clash/AppSettingsActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import androidx.core.content.pm.ShortcutManagerCompat
66
import com.github.kr328.clash.common.util.componentName
77
import com.github.kr328.clash.design.AppSettingsDesign
88
import com.github.kr328.clash.design.model.Behavior
9+
import com.github.kr328.clash.design.store.UiStore.Companion.mainActivityAlias
910
import com.github.kr328.clash.service.store.ServiceStore
1011
import com.github.kr328.clash.util.ApplicationObserver
1112
import kotlinx.coroutines.isActive
@@ -70,7 +71,7 @@ class AppSettingsActivity : BaseActivity<AppSettingsDesign>(), Behavior {
7071
PackageManager.COMPONENT_ENABLED_STATE_ENABLED
7172
}
7273
packageManager.setComponentEnabledSetting(
73-
ComponentName(this, mainActivityAlias),
74+
mainActivityAlias,
7475
newState,
7576
PackageManager.DONT_KILL_APP
7677
)

app/src/main/java/com/github/kr328/clash/MainActivity.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,5 +159,3 @@ class MainActivity : BaseActivity<MainDesign>() {
159159
}
160160
}
161161
}
162-
163-
val mainActivityAlias = "${MainActivity::class.java.name}Alias"

app/src/main/java/com/github/kr328/clash/MainApplication.kt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
package com.github.kr328.clash
22

33
import android.app.Application
4-
import android.content.ComponentName
54
import android.content.Context
65
import android.content.Intent
7-
import android.content.pm.PackageManager
86
import androidx.core.content.pm.ShortcutInfoCompat
97
import androidx.core.content.pm.ShortcutManagerCompat
108
import androidx.core.graphics.drawable.IconCompat
119
import com.github.kr328.clash.common.Global
1210
import com.github.kr328.clash.common.compat.currentProcessName
1311
import com.github.kr328.clash.common.constants.Intents
1412
import com.github.kr328.clash.common.log.Log
13+
import com.github.kr328.clash.design.store.UiStore
1514
import com.github.kr328.clash.remote.Remote
1615
import com.github.kr328.clash.service.util.sendServiceRecreated
1716
import com.github.kr328.clash.util.clashDir
@@ -22,6 +21,8 @@ import com.github.kr328.clash.design.R as DesignR
2221

2322
@Suppress("unused")
2423
class MainApplication : Application() {
24+
private val uiStore by lazy(LazyThreadSafetyMode.NONE) { UiStore(this) }
25+
2526
override fun attachBaseContext(base: Context?) {
2627
super.attachBaseContext(base)
2728

@@ -45,12 +46,8 @@ class MainApplication : Application() {
4546
}
4647

4748
private fun setupShortcuts() {
48-
val aliasState = packageManager.getComponentEnabledSetting(
49-
ComponentName(this, mainActivityAlias)
50-
)
51-
if (aliasState != PackageManager.COMPONENT_ENABLED_STATE_ENABLED &&
52-
aliasState != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
53-
) {
49+
if (uiStore.hideAppIcon) {
50+
// Prevent launcher activity not found.
5451
ShortcutManagerCompat.removeAllDynamicShortcuts(this)
5552
return
5653
}

design/src/main/java/com/github/kr328/clash/design/store/UiStore.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.github.kr328.clash.design.store
22

3+
import android.content.ComponentName
34
import android.content.Context
5+
import android.content.pm.PackageManager
46
import com.github.kr328.clash.common.store.Store
57
import com.github.kr328.clash.common.store.asStoreProvider
68
import com.github.kr328.clash.core.model.ProxySort
@@ -27,7 +29,11 @@ class UiStore(context: Context) {
2729

2830
var hideAppIcon: Boolean by store.boolean(
2931
key = "hide_app_icon",
30-
defaultValue = false
32+
defaultValue = context.packageManager.getComponentEnabledSetting(context.mainActivityAlias)
33+
.let { state ->
34+
state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED &&
35+
state != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
36+
},
3137
)
3238

3339
var hideFromRecents: Boolean by store.boolean(
@@ -74,5 +80,8 @@ class UiStore(context: Context) {
7480

7581
companion object {
7682
private const val PREFERENCE_NAME = "ui"
83+
84+
val Context.mainActivityAlias: ComponentName
85+
get() = ComponentName(this, "com.github.kr328.clash.MainActivityAlias")
7786
}
7887
}

0 commit comments

Comments
 (0)