From 4d81cacbddced716d806a0eee505261b67d77a3c Mon Sep 17 00:00:00 2001 From: Mygod Date: Tue, 8 Dec 2015 21:43:18 +0800 Subject: [PATCH 1/4] Fix syncing issue --- src/main/scala/com/github/shadowsocks/AppManagerReceiver.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/com/github/shadowsocks/AppManagerReceiver.scala b/src/main/scala/com/github/shadowsocks/AppManagerReceiver.scala index f754f11a..f3170f21 100644 --- a/src/main/scala/com/github/shadowsocks/AppManagerReceiver.scala +++ b/src/main/scala/com/github/shadowsocks/AppManagerReceiver.scala @@ -7,5 +7,5 @@ import android.content.{Intent, Context, BroadcastReceiver} */ class AppManagerReceiver extends BroadcastReceiver { override def onReceive(context: Context, intent: Intent) = if (intent.getAction != Intent.ACTION_PACKAGE_REMOVED || - !intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) AppManager.cachedApps = null + !intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) AppManager.synchronized(AppManager.cachedApps = null) } From edd5fb4a4c8aa94a599e8f6ed647e03d88e63289 Mon Sep 17 00:00:00 2001 From: Mygod Date: Tue, 8 Dec 2015 22:08:20 +0800 Subject: [PATCH 2/4] Use brighter accent color for FAB --- src/main/res/values/colors.xml | 2 +- src/main/scala/com/github/shadowsocks/Shadowsocks.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml index 311f4003..333f4545 100644 --- a/src/main/res/values/colors.xml +++ b/src/main/res/values/colors.xml @@ -2,7 +2,7 @@ - #388E3C + #64DD17 #90A4AE #607D8B #455A64 diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index a301deed..cac22920 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -246,7 +246,7 @@ class Shadowsocks getFragmentManager.findFragmentById(android.R.id.content).asInstanceOf[ShadowsocksSettings] private var adView: AdView = _ private lazy val greyTint = ContextCompat.getColorStateList(this, R.color.material_blue_grey_700) - private lazy val greenTint = ContextCompat.getColorStateList(this, R.color.material_green_700) + private lazy val greenTint = ContextCompat.getColorStateList(this, R.color.material_green_a700) var handler = new Handler() From de768f79796e8d180582c8a45db0d9a2be35f7c2 Mon Sep 17 00:00:00 2001 From: Mygod Date: Tue, 8 Dec 2015 22:19:02 +0800 Subject: [PATCH 3/4] Hide apps that doesn't require INTERNET permission --- src/main/scala/com/github/shadowsocks/AppManager.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/AppManager.scala b/src/main/scala/com/github/shadowsocks/AppManager.scala index 05697a64..2e977e00 100644 --- a/src/main/scala/com/github/shadowsocks/AppManager.scala +++ b/src/main/scala/com/github/shadowsocks/AppManager.scala @@ -54,6 +54,7 @@ import android.view._ import android.widget.AbsListView.OnScrollListener import android.widget.CompoundButton.OnCheckedChangeListener import android.widget._ +import android.Manifest.permission import com.github.shadowsocks.utils.{Key, Utils} import scala.collection.JavaConversions._ @@ -66,8 +67,10 @@ object AppManager { var cachedApps: Array[ProxiedApp] = _ private def getApps(pm: PackageManager) = { - if (cachedApps == null) cachedApps = pm.getInstalledApplications(0) - .map(a => new ProxiedApp(pm.getApplicationLabel(a).toString, a.packageName, a.loadIcon(pm))).toArray + if (cachedApps == null) cachedApps = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS) + .filter(p => p.requestedPermissions != null && p.requestedPermissions.contains(permission.INTERNET)) + .map(p => new ProxiedApp(pm.getApplicationLabel(p.applicationInfo).toString, p.packageName, + p.applicationInfo.loadIcon(pm))).toArray cachedApps } } From 7e6bc0d740553b2e954a5a78f5d0a3c0cf3ad0b8 Mon Sep 17 00:00:00 2001 From: Mygod Date: Tue, 8 Dec 2015 22:34:27 +0800 Subject: [PATCH 4/4] Provide a better workaround for hiding FAB Fix #471 --- .../com/github/shadowsocks/Shadowsocks.scala | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index cac22920..3e3d0a60 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -450,26 +450,28 @@ class Shadowsocks bgService.getState match { case State.CONNECTING => fab.setBackgroundTintList(greyTint) - changeSwitch(checked = true) + serviceStarted = false + fab.setImageResource(R.drawable.ic_cloud_queue) setPreferenceEnabled(false) fabProgressCircle.show() case State.CONNECTED => fab.setBackgroundTintList(greenTint) - changeSwitch(checked = true) + serviceStarted = true + fab.setImageResource(R.drawable.ic_cloud) setPreferenceEnabled(false) - fabProgressCircle.show() - handler.postDelayed(() => fabProgressCircle.hide(), 1000) + fabProgressCircle.postDelayed(fabProgressCircle.hide, 100) case State.STOPPING => fab.setBackgroundTintList(greyTint) - changeSwitch(checked = false) + serviceStarted = false + fab.setImageResource(R.drawable.ic_cloud_queue) setPreferenceEnabled(false) fabProgressCircle.show() case _ => fab.setBackgroundTintList(greyTint) - changeSwitch(checked = false) + serviceStarted = false + fab.setImageResource(R.drawable.ic_cloud_off) setPreferenceEnabled(true) - fabProgressCircle.show() - handler.postDelayed(() => fabProgressCircle.hide(), 1000) + fabProgressCircle.postDelayed(fabProgressCircle.hide, 100) } state = bgService.getState }