diff --git a/project/Build.scala b/project/Build.scala index 9874cdec..652d8f80 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -5,8 +5,8 @@ import sbtandroid._ import sbtandroid.AndroidPlugin._ object App { - val version = "2.0.7" - val versionCode = 58 + val version = "2.0.8" + val versionCode = 59 } object General { diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 54727274..a971ad65 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -73,9 +73,6 @@ android:name=".ShadowsocksNatService" android:process=":proxy" android:exported="false"> - - - - diff --git a/src/main/res/values-zh/strings.xml b/src/main/res/values-zh/strings.xml index 4c3cba0c..f3b6b1d4 100755 --- a/src/main/res/values-zh/strings.xml +++ b/src/main/res/values-zh/strings.xml @@ -44,7 +44,7 @@ 后台服务已停止。 请检查你的网络状态后并重试。 停止服务 - 您仅能通过通知栏关闭 VPN 服务 + 推荐通过通知栏关闭 VPN 服务 无法启动 VPN 服务:\"%s\"。看来和你的设备存在兼容性问题,请使用 Root 模式。 确定 端口号应大于1024 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index a6fe2411..a2348b15 100755 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -55,7 +55,7 @@ Shadowsocks stopped. Please check your network status and try again. Stop the service - You can only disable the VPN service through the notification bar. + Recommend to disable the VPN service through the notification bar. Unable to start VPN service: "%s". It seems to be a compatibility issue with your device. Please consider using ROOT mode instead. diff --git a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala index d69443a0..3d19c1b2 100644 --- a/src/main/scala/com/github/shadowsocks/Shadowsocks.scala +++ b/src/main/scala/com/github/shadowsocks/Shadowsocks.scala @@ -610,8 +610,10 @@ class Shadowsocks if (bgService == null) { val isRoot = status.getBoolean(Key.isRoot, false) val s = if (isRoot) classOf[ShadowsocksNatService] else classOf[ShadowsocksVpnService] - bindService(new Intent(s.getName), connection, Context.BIND_AUTO_CREATE) - startService(new Intent(Shadowsocks.this, s)) + val intent = new Intent(this, s) + intent.setAction(Action.SERVICE) + bindService(intent, connection, Context.BIND_AUTO_CREATE) + startService(new Intent(this, s)) } } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala index 10fc98c3..8e0ec58a 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala @@ -253,7 +253,7 @@ class ShadowsocksNatService extends Service with BaseService { } def onBind(intent: Intent): IBinder = { - if (classOf[ShadowsocksNatService].getName equals intent.getAction) { + if (Action.SERVICE == intent.getAction) { binder } else { null diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksReceiver.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksReceiver.scala index 72ecaef1..1f5a5463 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksReceiver.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksReceiver.scala @@ -64,7 +64,9 @@ class ShadowsocksReceiver extends BroadcastReceiver { val isAutoConnect: Boolean = settings.getBoolean(Key.isAutoConnect, false) val isInstalled: Boolean = status.getBoolean(versionName, false) if (isAutoConnect && isInstalled) { - context.startActivity(new Intent(context, classOf[ShadowsocksRunnerActivity])) + val intent = new Intent(context, classOf[ShadowsocksRunnerActivity]) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + context.startActivity(intent) } } } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala index 4e929c2d..7a0d0b01 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksRunnerActivity.scala @@ -77,7 +77,9 @@ class ShadowsocksRunnerActivity extends Activity { def attachService() { if (bgService == null) { val s = if (isRoot) classOf[ShadowsocksNatService] else classOf[ShadowsocksVpnService] - bindService(new Intent(s.getName), connection, Context.BIND_AUTO_CREATE) + val intent = new Intent(this, s) + intent.setAction(Action.SERVICE) + bindService(intent, connection, Context.BIND_AUTO_CREATE) startService(new Intent(this, s)) } } diff --git a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala index ace47e25..db89e0cc 100644 --- a/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala +++ b/src/main/scala/com/github/shadowsocks/ShadowsocksVpnService.scala @@ -254,7 +254,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { val action = intent.getAction if (VpnService.SERVICE_INTERFACE == action) { return super.onBind(intent) - } else if (classOf[ShadowsocksVpnService].getName == action) { + } else if (Action.SERVICE == action) { return binder } null diff --git a/src/main/scala/com/github/shadowsocks/utils/Constants.scala b/src/main/scala/com/github/shadowsocks/utils/Constants.scala index 2b4df64e..0ac11dd8 100644 --- a/src/main/scala/com/github/shadowsocks/utils/Constants.scala +++ b/src/main/scala/com/github/shadowsocks/utils/Constants.scala @@ -59,7 +59,8 @@ object State { } object Action { + val SERVICE = "com.github.shadowsocks.SERVICE" val CLOSE = "com.github.shadowsocks.CLOSE" val UPDATE_FRAGMENT = "com.github.shadowsocks.ACTION_UPDATE_FRAGMENT" val UPDATE_PREFS = "com.github.shadowsocks.ACTION_UPDATE_PREFS" -} \ No newline at end of file +}