From 97e93552c617ed645b0c8ce0eb67188eb97ec70a Mon Sep 17 00:00:00 2001 From: Mygod Date: Fri, 8 Dec 2017 17:35:44 -0800 Subject: [PATCH] Always proxy the app itself No need to keep a confusing option. Fix #1484. --- .../java/com/github/shadowsocks/AppManager.kt | 3 ++- .../com/github/shadowsocks/bg/VpnService.kt | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mobile/src/main/java/com/github/shadowsocks/AppManager.kt b/mobile/src/main/java/com/github/shadowsocks/AppManager.kt index 67c5c7c0..dbab37ee 100644 --- a/mobile/src/main/java/com/github/shadowsocks/AppManager.kt +++ b/mobile/src/main/java/com/github/shadowsocks/AppManager.kt @@ -67,7 +67,8 @@ class AppManager : AppCompatActivity(), Toolbar.OnMenuItemClickListener { } return synchronized(AppManager) { val cachedApps = cachedApps ?: pm.getInstalledPackages(PackageManager.GET_PERMISSIONS) - .filter { it.requestedPermissions?.contains(Manifest.permission.INTERNET) ?: false } + .filter { it.packageName != app.packageName && + it.requestedPermissions?.contains(Manifest.permission.INTERNET) ?: false } .map { ProxiedApp(pm.getApplicationLabel(it.applicationInfo).toString(), it.packageName, it.applicationInfo.loadIcon(pm)) } .toTypedArray() diff --git a/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt b/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt index 452ff06f..ed66100f 100644 --- a/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt +++ b/mobile/src/main/java/com/github/shadowsocks/bg/VpnService.kt @@ -141,11 +141,18 @@ class VpnService : BaseVpnService(), LocalDnsService.Interface { } if (Build.VERSION.SDK_INT >= 21 && profile.proxyApps) { - for (pkg in profile.individual.split('\n')) try { - if (profile.bypass) builder.addDisallowedApplication(pkg) else builder.addAllowedApplication(pkg) - } catch (ex: PackageManager.NameNotFoundException) { - Log.e(tag, "Invalid package name", ex) - } + val me = packageName + profile.individual.split('\n') + .filter { it != me } + .forEach { + try { + if (profile.bypass) builder.addDisallowedApplication(it) + else builder.addAllowedApplication(it) + } catch (ex: PackageManager.NameNotFoundException) { + Log.e(tag, "Invalid package name", ex) + } + } + builder.addAllowedApplication(me) } when (profile.route) {