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
+}