Fix crash when Hide App Icon is enabled alongside dynamic shortcuts (#701)

This commit is contained in:
Zongle Wang
2026-04-10 12:17:41 +08:00
committed by GitHub
parent afd1da50b7
commit 8453bfc07d
2 changed files with 18 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ package com.github.kr328.clash
import android.content.ComponentName
import android.content.pm.PackageManager
import androidx.core.content.pm.ShortcutManagerCompat
import com.github.kr328.clash.common.util.componentName
import com.github.kr328.clash.design.AppSettingsDesign
import com.github.kr328.clash.design.model.Behavior
@@ -73,5 +74,9 @@ class AppSettingsActivity : BaseActivity<AppSettingsDesign>(), Behavior {
newState,
PackageManager.DONT_KILL_APP
)
if (hide) {
// Prevent launcher activity not found.
ShortcutManagerCompat.removeAllDynamicShortcuts(this)
}
}
}
}

View File

@@ -1,8 +1,10 @@
package com.github.kr328.clash
import android.app.Application
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.drawable.IconCompat
@@ -43,6 +45,16 @@ class MainApplication : Application() {
}
private fun setupShortcuts() {
val aliasState = packageManager.getComponentEnabledSetting(
ComponentName(this, mainActivityAlias)
)
if (aliasState != PackageManager.COMPONENT_ENABLED_STATE_ENABLED &&
aliasState != PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
) {
ShortcutManagerCompat.removeAllDynamicShortcuts(this)
return
}
val icon = IconCompat.createWithResource(this, R.mipmap.ic_launcher)
val flags = Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS or