@@ -27,6 +27,7 @@ import io.github.sds100.keymapper.system.permissions.PermissionAdapter
2727import io.github.sds100.keymapper.system.permissions.SystemFeatureAdapter
2828import io.github.sds100.keymapper.system.ringtones.RingtoneAdapter
2929import io.github.sds100.keymapper.system.settings.SettingType
30+ import java.util.concurrent.ConcurrentHashMap
3031
3132class LazyActionErrorSnapshot (
3233 private val packageManager : PackageManagerAdapter ,
@@ -65,6 +66,9 @@ class LazyActionErrorSnapshot(
6566 }
6667 }
6768
69+ private val isAppEnabledCache = ConcurrentHashMap <String , Boolean >()
70+ private val isAppInstalledCache = ConcurrentHashMap <String , Boolean >()
71+
6872 private val isSystemBridgeConnected: Boolean by lazy {
6973 systemBridgeConnectionManager.isConnected()
7074 }
@@ -250,13 +254,30 @@ class LazyActionErrorSnapshot(
250254 }
251255
252256 private fun getAppError (packageName : String ): KMError ? {
257+ if (isAppEnabledCache.contains(packageName) && isAppInstalledCache.contains(packageName)) {
258+ if (isAppEnabledCache[packageName] == false ) {
259+ return KMError .AppDisabled (packageName)
260+ }
261+
262+ if (isAppInstalledCache[packageName] == false ) {
263+ return KMError .AppDisabled (packageName)
264+ }
265+
266+ return null
267+ }
268+
269+ val isAppInstalled = packageManager.isAppInstalled(packageName)
270+ isAppInstalledCache[packageName] = isAppInstalled
271+
253272 packageManager.isAppEnabled(packageName).onSuccess { isEnabled ->
273+ isAppEnabledCache[packageName] = isEnabled
274+
254275 if (! isEnabled) {
255276 return KMError .AppDisabled (packageName)
256277 }
257278 }
258279
259- if (! packageManager. isAppInstalled(packageName) ) {
280+ if (! isAppInstalled) {
260281 return KMError .AppNotFound (packageName)
261282 }
262283
0 commit comments