diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsActivity.kt b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsActivity.kt
index 6486f5d8f..8fdade228 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsActivity.kt
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/SelectedApplicationsActivity.kt
@@ -150,9 +150,17 @@ private fun SelectedAppsScreen(
onChange(selected)
}
- val filtered = remember(apps, query) {
- if (query.isBlank()) apps
- else apps.filter { it.toString().contains(query, ignoreCase = true) || it.info.packageName.contains(query, ignoreCase = true) }
+ /* pure system apps are hidden by default (they are rarely worth excluding); a selected one always shows */
+ var showSystem by remember { mutableStateOf(false) }
+ val filtered = remember(apps, query, showSystem, selected) {
+ apps.filter { entry ->
+ val flags = entry.info.flags
+ val system = (flags and android.content.pm.ApplicationInfo.FLAG_SYSTEM) != 0 &&
+ (flags and android.content.pm.ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0
+ (showSystem || !system || selected.contains(entry.info.packageName)) &&
+ (query.isBlank() || entry.toString().contains(query, ignoreCase = true) ||
+ entry.info.packageName.contains(query, ignoreCase = true))
+ }
}
SecondaryScaffold(title = stringResource(R.string.profile_select_apps), onBack = onBack) { padding ->
@@ -164,6 +172,17 @@ private fun SelectedAppsScreen(
singleLine = true,
modifier = Modifier.padding(horizontal = ShxSpacing.lg, vertical = ShxSpacing.sm).fillMaxWidth(),
)
+ androidx.compose.foundation.layout.Row(
+ verticalAlignment = androidx.compose.ui.Alignment.CenterVertically,
+ modifier = Modifier
+ .fillMaxWidth()
+ .clickable { showSystem = !showSystem }
+ .padding(horizontal = ShxSpacing.lg),
+ )
+ {
+ Text(stringResource(R.string.apps_show_system), modifier = Modifier.weight(1f))
+ androidx.compose.material3.Switch(checked = showSystem, onCheckedChange = null)
+ }
if (loading)
{
LoadingIndicator(Modifier.padding(ShxSpacing.xl).size(32.dp))
diff --git a/src/frontends/android/app/src/main/res/values-de/strings.xml b/src/frontends/android/app/src/main/res/values-de/strings.xml
index 691270d88..ee3914794 100644
--- a/src/frontends/android/app/src/main/res/values-de/strings.xml
+++ b/src/frontends/android/app/src/main/res/values-de/strings.xml
@@ -509,4 +509,5 @@
Alle
Warnungen
Fehler
+ Systemapps anzeigen
diff --git a/src/frontends/android/app/src/main/res/values-ru/strings.xml b/src/frontends/android/app/src/main/res/values-ru/strings.xml
index a3210c137..f69179dcb 100644
--- a/src/frontends/android/app/src/main/res/values-ru/strings.xml
+++ b/src/frontends/android/app/src/main/res/values-ru/strings.xml
@@ -506,4 +506,5 @@
Все
Предупреждения
Ошибки
+ Показывать системные приложения
diff --git a/src/frontends/android/app/src/main/res/values/strings.xml b/src/frontends/android/app/src/main/res/values/strings.xml
index 28f4f577b..3af02c5cb 100644
--- a/src/frontends/android/app/src/main/res/values/strings.xml
+++ b/src/frontends/android/app/src/main/res/values/strings.xml
@@ -511,4 +511,5 @@
All
Warnings
Errors
+ Show system apps