mirror of
https://codeberg.org/timelimit/timelimit-android.git
synced 2025-10-03 01:39:22 +02:00
Whitelist package installer only in store version; otherwise add to default whitelist
This commit is contained in:
parent
50a5ae56a6
commit
822c148832
3 changed files with 67 additions and 22 deletions
|
@ -37,14 +37,19 @@ object AndroidIntegrationApps {
|
|||
.addCategory(Intent.CATEGORY_DEFAULT)
|
||||
.addCategory(Intent.CATEGORY_HOME)
|
||||
|
||||
val ignoredApps = HashSet<String>()
|
||||
enum class IgnoredAppHandling {
|
||||
Ignore,
|
||||
IgnoreOnStoreOtherwiseWhitelistAndDontDisable
|
||||
}
|
||||
|
||||
val ignoredApps = mutableMapOf<String, IgnoredAppHandling>()
|
||||
init {
|
||||
ignoredApps.add("com.android.systemui")
|
||||
ignoredApps.add("android")
|
||||
ignoredApps.add("com.android.packageinstaller")
|
||||
ignoredApps.add("com.google.android.packageinstaller")
|
||||
ignoredApps.add("com.android.bluetooth")
|
||||
ignoredApps.add("com.android.nfc")
|
||||
ignoredApps["com.android.systemui"] = AndroidIntegrationApps.IgnoredAppHandling.Ignore
|
||||
ignoredApps["android"] = AndroidIntegrationApps.IgnoredAppHandling.Ignore
|
||||
ignoredApps["com.android.bluetooth"] = AndroidIntegrationApps.IgnoredAppHandling.Ignore
|
||||
ignoredApps["com.android.nfc"] = AndroidIntegrationApps.IgnoredAppHandling.Ignore
|
||||
ignoredApps["com.android.packageinstaller"] = AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable
|
||||
ignoredApps["com.google.android.packageinstaller"] = AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable
|
||||
}
|
||||
|
||||
fun getLocalApps(deviceId: String, context: Context): Collection<App> {
|
||||
|
@ -82,17 +87,31 @@ object AndroidIntegrationApps {
|
|||
|
||||
for (applicationInfo in installedPackages) {
|
||||
val packageName = applicationInfo.packageName
|
||||
val ignoreConfig = ignoredApps[packageName]
|
||||
|
||||
if (result.containsKey(packageName)) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (when (ignoreConfig) {
|
||||
null -> false
|
||||
AndroidIntegrationApps.IgnoredAppHandling.Ignore -> true
|
||||
AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable -> BuildConfig.storeCompilant
|
||||
}) {
|
||||
continue
|
||||
}
|
||||
|
||||
if (!result.containsKey(packageName) && !ignoredApps.contains(packageName)) {
|
||||
result[packageName] = App(
|
||||
deviceId = deviceId,
|
||||
packageName = packageName,
|
||||
title = applicationInfo.loadLabel(packageManager).toString(),
|
||||
isLaunchable = false,
|
||||
recommendation = AppRecommendation.None
|
||||
recommendation = if (ignoreConfig == AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable)
|
||||
AppRecommendation.Whitelist
|
||||
else
|
||||
AppRecommendation.None
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return result.values
|
||||
}
|
||||
|
@ -117,7 +136,9 @@ object AndroidIntegrationApps {
|
|||
|
||||
for (info in resolveInfoList) {
|
||||
val packageName = info.activityInfo.applicationInfo.packageName
|
||||
if (ignoredApps.contains(packageName)) {
|
||||
val ignoreConfig = ignoredApps[packageName]
|
||||
|
||||
if (ignoreConfig != null && BuildConfig.storeCompilant) {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -127,7 +148,10 @@ object AndroidIntegrationApps {
|
|||
packageName = packageName,
|
||||
title = info.activityInfo.applicationInfo.loadLabel(packageManager).toString(),
|
||||
isLaunchable = true,
|
||||
recommendation = recommendation
|
||||
recommendation = if (ignoreConfig == AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable)
|
||||
AppRecommendation.Whitelist
|
||||
else
|
||||
recommendation
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -140,7 +164,9 @@ object AndroidIntegrationApps {
|
|||
return
|
||||
}
|
||||
|
||||
if (ignoredApps.contains(packageName)) {
|
||||
val ignoreConfig = ignoredApps[packageName]
|
||||
|
||||
if (ignoreConfig != null && BuildConfig.storeCompilant) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -156,7 +182,10 @@ object AndroidIntegrationApps {
|
|||
packageName = packageName,
|
||||
title = packageInfo.loadLabel(packageManager).toString(),
|
||||
isLaunchable = true,
|
||||
recommendation = recommendation
|
||||
recommendation = if (ignoreConfig == AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable)
|
||||
AppRecommendation.Whitelist
|
||||
else
|
||||
recommendation
|
||||
)
|
||||
} catch (ex: PackageManager.NameNotFoundException) {
|
||||
// ignore
|
||||
|
|
|
@ -270,7 +270,13 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
|||
|
||||
if (
|
||||
(foregroundAppPackageName == BuildConfig.APPLICATION_ID) ||
|
||||
(foregroundAppPackageName != null && AndroidIntegrationApps.ignoredApps.contains(foregroundAppPackageName))
|
||||
(foregroundAppPackageName != null && AndroidIntegrationApps.ignoredApps[foregroundAppPackageName].let {
|
||||
when (it) {
|
||||
null -> false
|
||||
AndroidIntegrationApps.IgnoredAppHandling.Ignore -> true
|
||||
AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable -> BuildConfig.storeCompilant
|
||||
}
|
||||
})
|
||||
) {
|
||||
usedTimeUpdateHelper?.commit(appLogic)
|
||||
showStatusMessageWithCurrentAppTitle(
|
||||
|
@ -303,7 +309,11 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
|
|||
if (category == null) {
|
||||
usedTimeUpdateHelper?.commit(appLogic)
|
||||
|
||||
if (AndroidIntegrationApps.ignoredApps[foregroundAppPackageName] == null) {
|
||||
// don't suspend system apps which are whitelisted in any version
|
||||
appLogic.platformIntegration.setSuspendedApps(listOf(foregroundAppPackageName), true)
|
||||
}
|
||||
|
||||
openLockscreen(foregroundAppPackageName, foregroundAppActivityName)
|
||||
} else if (category.temporarilyBlocked or (parentCategory?.temporarilyBlocked == true)) {
|
||||
usedTimeUpdateHelper?.commit(appLogic)
|
||||
|
|
|
@ -105,7 +105,13 @@ class BlockingReasonUtil(private val appLogic: AppLogic) {
|
|||
// check internal whitelist
|
||||
if (packageName == BuildConfig.APPLICATION_ID) {
|
||||
return liveDataFromValue(NoBlockingReason.getInstance(areNotificationsBlocked = false))
|
||||
} else if (AndroidIntegrationApps.ignoredApps.contains(packageName)) {
|
||||
} else if (AndroidIntegrationApps.ignoredApps[packageName].let {
|
||||
when (it) {
|
||||
null -> false
|
||||
AndroidIntegrationApps.IgnoredAppHandling.Ignore -> true
|
||||
AndroidIntegrationApps.IgnoredAppHandling.IgnoreOnStoreOtherwiseWhitelistAndDontDisable -> BuildConfig.storeCompilant
|
||||
}
|
||||
}) {
|
||||
return liveDataFromValue(NoBlockingReason.getInstance(areNotificationsBlocked = false))
|
||||
} else {
|
||||
return getBlockingReasonStep3(packageName, activityName, child, timeZone)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue