@@ -58,7 +58,7 @@ private val PackageInfo.isOverlay: Boolean
5858 }
5959
6060val ApplicationInfo .isSystem: Boolean
61- get() = flags and ApplicationInfo .FLAG_SYSTEM != 0
61+ get() = flags and ApplicationInfo .FLAG_SYSTEM != 0 || flags and ApplicationInfo . FLAG_UPDATED_SYSTEM_APP != 0
6262
6363private fun checkIfNotHasActivity (packageName : String , userId : Int ): Boolean {
6464 val flags = PackageManager .MATCH_UNINSTALLED_PACKAGES or PackageManager .GET_ACTIVITIES
@@ -78,6 +78,23 @@ private fun checkIfNotHasActivity(packageName: String, userId: Int): Boolean {
7878 }
7979}
8080
81+ private fun PackageInfo.getEnabled (userId : Int ): Boolean {
82+ val enabled = applicationInfo?.enabled ? : true
83+ if (enabled) return true
84+ val state = if (userId == currentUserId) {
85+ app.packageManager.getApplicationEnabledSetting(packageName)
86+ } else {
87+ shizukuContextFlow.value.packageManager?.getApplicationEnabledSetting(
88+ packageName,
89+ currentUserId
90+ ) ? : 0
91+ }
92+ return when (state) {
93+ PackageManager .COMPONENT_ENABLED_STATE_DISABLED , PackageManager .COMPONENT_ENABLED_STATE_DISABLED_USER , PackageManager .COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED -> false
94+ else -> true
95+ }
96+ }
97+
8198// all->433 isOverlay->354 checkIfNotHasActivity->271
8299fun PackageInfo.toAppInfo (
83100 userId : Int = currentUserId,
@@ -93,7 +110,7 @@ fun PackageInfo.toAppInfo(
93110 isSystem = isSystem,
94111 name = applicationInfo?.run { loadLabel(app.packageManager).toString() } ? : packageName,
95112 hidden = hidden ? : (isSystem && (isOverlay || checkIfNotHasActivity(packageName, userId))),
96- enabled = applicationInfo?.enabled ? : true ,
113+ enabled = getEnabled(userId) ,
97114 )
98115}
99116
0 commit comments