diff --git a/core/src/main/java/net/ivpn/core/v2/viewmodel/SplitTunnelingViewModel.java b/core/src/main/java/net/ivpn/core/v2/viewmodel/SplitTunnelingViewModel.java
index 12b33cdb8..b1ad5751b 100644
--- a/core/src/main/java/net/ivpn/core/v2/viewmodel/SplitTunnelingViewModel.java
+++ b/core/src/main/java/net/ivpn/core/v2/viewmodel/SplitTunnelingViewModel.java
@@ -165,9 +165,10 @@ protected List<ApplicationItem> doInBackground(Void... voids) {
             for (ApplicationInfo info : applicationInfoList) {
                 try {
                     if (PackageManager.PERMISSION_GRANTED == packageManager.checkPermission(Manifest.permission.INTERNET, info.packageName)) {
-                        if (null != packageManager.getLaunchIntentForPackage(info.packageName) ||
+                        if ((null != packageManager.getLaunchIntentForPackage(info.packageName) ||
                                 null != packageManager.getLeanbackLaunchIntentForPackage(info.packageName) ||
-                                null != packageManager.getInstallerPackageName(info.packageName)
+                                null != packageManager.getInstallerPackageName(info.packageName) &&
+                                        (info.flags & ApplicationInfo.FLAG_SYSTEM) == 0)
                         ) {
                             if (packageNames.add(info.loadLabel(packageManager).toString())) {
                                 items.add(new ApplicationItem(info.loadLabel(packageManager).toString(), info.packageName,