Commit d4dd6929 authored by Max Lv's avatar Max Lv

Fix a bug in the individual proxy

parent 75334ad9
...@@ -5,8 +5,8 @@ import org.scalasbt.androidplugin._ ...@@ -5,8 +5,8 @@ import org.scalasbt.androidplugin._
import org.scalasbt.androidplugin.AndroidKeys._ import org.scalasbt.androidplugin.AndroidKeys._
object App { object App {
val version = "1.6.3" val version = "1.6.4"
val versionCode = 33 val versionCode = 34
} }
object General { object General {
......
...@@ -81,14 +81,10 @@ case class ListEntry(box: CheckBox, text: TextView, icon: ImageView) ...@@ -81,14 +81,10 @@ case class ListEntry(box: CheckBox, text: TextView, icon: ImageView)
object AppManager { object AppManager {
val PREFS_KEY_PROXYED = "Proxyed"
implicit def anyrefarray_tools[T <: AnyRef](a: Array[T]) = new ObjectArrayTools(a) implicit def anyrefarray_tools[T <: AnyRef](a: Array[T]) = new ObjectArrayTools(a)
def getProxiedApps(context: Context): Array[ProxiedApp] = { def getProxiedApps(context: Context, proxiedAppString: String): Array[ProxiedApp] = {
val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
val proxiedAppString = prefs.getString(PREFS_KEY_PROXYED, "")
val proxiedApps = proxiedAppString.split('|').sortWith(_ < _) val proxiedApps = proxiedAppString.split('|').sortWith(_ < _)
import scala.collection.JavaConversions._ import scala.collection.JavaConversions._
...@@ -125,7 +121,7 @@ class AppManager extends SherlockActivity with OnCheckedChangeListener with OnCl ...@@ -125,7 +121,7 @@ class AppManager extends SherlockActivity with OnCheckedChangeListener with OnCl
def loadApps(context: Context): Array[ProxiedApp] = { def loadApps(context: Context): Array[ProxiedApp] = {
val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) val prefs: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
val proxiedAppString = prefs.getString(AppManager.PREFS_KEY_PROXYED, "") val proxiedAppString = prefs.getString(Key.proxied, "")
val proxiedApps = proxiedAppString.split('|').sortWith(_ < _) val proxiedApps = proxiedAppString.split('|').sortWith(_ < _)
import scala.collection.JavaConversions._ import scala.collection.JavaConversions._
...@@ -267,7 +263,7 @@ class AppManager extends SherlockActivity with OnCheckedChangeListener with OnCl ...@@ -267,7 +263,7 @@ class AppManager extends SherlockActivity with OnCheckedChangeListener with OnCl
proxiedApps += '|' proxiedApps += '|'
}) })
val edit: SharedPreferences.Editor = prefs.edit val edit: SharedPreferences.Editor = prefs.edit
edit.putString(AppManager.PREFS_KEY_PROXYED, proxiedApps.toString()) edit.putString(Key.proxied, proxiedApps.toString())
edit.commit edit.commit
} }
......
...@@ -518,7 +518,9 @@ class ShadowsocksService extends Service { ...@@ -518,7 +518,9 @@ class ShadowsocksService extends Service {
}) })
} }
if (!config.isGlobalProxy) { if (!config.isGlobalProxy) {
if (apps == null || apps.length <= 0) apps = AppManager.getProxiedApps(this) if (apps == null || apps.length <= 0) {
apps = AppManager.getProxiedApps(this, config.proxiedAppString)
}
val uidSet: mutable.HashSet[Int] = new mutable.HashSet[Int] val uidSet: mutable.HashSet[Int] = new mutable.HashSet[Int]
for (app <- apps) { for (app <- apps) {
if (app.proxied) { if (app.proxied) {
......
...@@ -53,6 +53,8 @@ import android.graphics.{Canvas, Bitmap} ...@@ -53,6 +53,8 @@ import android.graphics.{Canvas, Bitmap}
import android.app.ActivityManager import android.app.ActivityManager
object Key { object Key {
val proxied = "Proxyed"
val isRoot = "isRoot" val isRoot = "isRoot"
val status = "status" val status = "status"
val proxyedApps = "proxyedApps" val proxyedApps = "proxyedApps"
...@@ -72,7 +74,8 @@ object Key { ...@@ -72,7 +74,8 @@ object Key {
} }
case class Config(isGlobalProxy: Boolean, isGFWList: Boolean, isBypassApps: Boolean, case class Config(isGlobalProxy: Boolean, isGFWList: Boolean, isBypassApps: Boolean,
var proxy: String, sitekey: String, encMethod: String, remotePort: Int, localPort: Int) var proxy: String, sitekey: String, encMethod: String, remotePort: Int,
localPort: Int, proxiedAppString: String)
object State { object State {
val INIT = 0 val INIT = 0
...@@ -116,9 +119,10 @@ object Extra { ...@@ -116,9 +119,10 @@ object Extra {
val encMethod = intent.getStringExtra(Key.encMethod) val encMethod = intent.getStringExtra(Key.encMethod)
val remotePort = intent.getIntExtra(Key.remotePort, 1984) val remotePort = intent.getIntExtra(Key.remotePort, 1984)
val localPort = intent.getIntExtra(Key.localPort, 1984) val localPort = intent.getIntExtra(Key.localPort, 1984)
val proxiedString = intent.getStringExtra(Key.proxied)
new Config(isGlobalProxy, isGFWList, isBypassApps, proxy, sitekey, encMethod, remotePort, new Config(isGlobalProxy, isGFWList, isBypassApps, proxy, sitekey, encMethod, remotePort,
localPort) localPort, proxiedString)
} }
def put(settings: SharedPreferences, intent: Intent) { def put(settings: SharedPreferences, intent: Intent) {
...@@ -146,6 +150,7 @@ object Extra { ...@@ -146,6 +150,7 @@ object Extra {
1984 1984
} }
} }
val proxiedAppString = settings.getString(Key.proxied, "")
intent.putExtra(Key.isGlobalProxy, isGlobalProxy) intent.putExtra(Key.isGlobalProxy, isGlobalProxy)
intent.putExtra(Key.isGFWList, isGFWList) intent.putExtra(Key.isGFWList, isGFWList)
...@@ -156,6 +161,8 @@ object Extra { ...@@ -156,6 +161,8 @@ object Extra {
intent.putExtra(Key.encMethod, encMethod) intent.putExtra(Key.encMethod, encMethod)
intent.putExtra(Key.remotePort, remotePort) intent.putExtra(Key.remotePort, remotePort)
intent.putExtra(Key.localPort, localProt) intent.putExtra(Key.localPort, localProt)
intent.putExtra(Key.proxied, proxiedAppString)
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment