diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4c1302b1..041b3f39 100755
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -51,6 +51,7 @@
+
diff --git a/pom.xml b/pom.xml
index 19a74594..af5adb14 100755
--- a/pom.xml
+++ b/pom.xml
@@ -1,6 +1,6 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
com.github.shadowsocks
shadowsocks
@@ -21,54 +21,70 @@
-
UTF-8
-
com.google.android
android
4.1.1.4
provided
-
+
+ com.google.android
+ support-v4
+ r7
+
+
+ crouton
+ 1.7
+ de.keyboardsurfer.android.widget
+
+
+ com.google.android
+ support-v4
+
+
+
com.actionbarsherlock
actionbarsherlock
- 4.2.0
+ 4.3.0
apklib
-
com.google.android.analytics
analytics
2.0beta4
-
-
- commons-codec
- commons-codec
- 1.5
-
-
net.saik0.android.unifiedpreference
unifiedpreference
0.0.2
apklib
+
+
+ com.actionbarsherlock
+ actionbarsherlock
+
+
-
org.jraf
android-switch-backport
1.0
apklib
+
+
+ com.actionbarsherlock
+ actionbarsherlock
+
+
-
+
${project.artifactId}
src
@@ -122,8 +138,10 @@
${sign.keypass}
true
- -sigalgMD5withRSA
- -digestalgSHA1
+ -sigalg
+ MD5withRSA
+ -digestalg
+ SHA1
diff --git a/res/layout/layout_switch.xml b/res/layout/layout_switch.xml
index 01b97abe..b84738e6 100644
--- a/res/layout/layout_switch.xml
+++ b/res/layout/layout_switch.xml
@@ -10,7 +10,7 @@
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginLeft="24dp"
- android:textSize="24sp"
+ android:textSize="28sp"
android:text="@string/app_name"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"/>
@@ -22,4 +22,4 @@
android:layout_alignParentRight="true"
android:layout_centerVertical="true"/>
-
\ No newline at end of file
+
diff --git a/src/com/github/shadowsocks/Shadowsocks.java b/src/com/github/shadowsocks/Shadowsocks.java
index 5189711c..d80a51eb 100755
--- a/src/com/github/shadowsocks/Shadowsocks.java
+++ b/src/com/github/shadowsocks/Shadowsocks.java
@@ -58,13 +58,14 @@ import android.view.KeyEvent;
import android.widget.CompoundButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import android.widget.Toast;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.google.analytics.tracking.android.EasyTracker;
import net.saik0.android.unifiedpreference.UnifiedPreferenceFragment;
import net.saik0.android.unifiedpreference.UnifiedSherlockPreferenceActivity;
import org.jraf.android.backport.switchwidget.Switch;
+import de.keyboardsurfer.android.widget.crouton.Crouton;
+import de.keyboardsurfer.android.widget.crouton.Style;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -92,8 +93,7 @@ public class Shadowsocks extends UnifiedSherlockPreferenceActivity
Editor ed = settings.edit();
switch (msg.what) {
case MSG_CRASH_RECOVER:
- Toast.makeText(Shadowsocks.this, R.string.crash_alert,
- Toast.LENGTH_LONG).show();
+ Crouton.makeText(Shadowsocks.this, R.string.crash_alert, Style.ALERT).show();
ed.putBoolean("isRunning", false);
break;
case MSG_INITIAL_FINISH:
@@ -153,9 +153,17 @@ public class Shadowsocks extends UnifiedSherlockPreferenceActivity
private void crash_recovery() {
- Utils.runRootCommand(Utils.getIptables() + " -t nat -F OUTPUT");
-
- Utils.runCommand(ShadowsocksService.BASE + "proxy.sh stop");
+ StringBuilder sb = new StringBuilder();
+ sb.append(Utils.getIptables()).append(" -t nat -F OUTPUT").append("\n");
+ sb.append("kill -9 `cat /data/data/com.github.shadowsocks/pdnsd.pid`").append("\n");
+ sb.append("kill -9 `cat /data/data/com.github.shadowsocks/redsocks.pid`").append("\n");
+ sb.append("kill -9 `cat /data/data/com.github.shadowsocks/shadowsocks.pid`").append("\n");
+ sb.append("kill -9 `cat /data/data/com.github.shadowsocks/polipo.pid`").append("\n");
+ sb.append("killall -9 pdnsd").append("\n");
+ sb.append("killall -9 redsocks").append("\n");
+ sb.append("killall -9 shadowsocks").append("\n");
+ sb.append("killall -9 polipo").append("\n");
+ Utils.runRootCommand(sb.toString());
}
@@ -229,7 +237,7 @@ public class Shadowsocks extends UnifiedSherlockPreferenceActivity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 按下的如果是BACK,同时没有重复
+ if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
try {
finish();
} catch (Exception ignore) {
@@ -423,17 +431,8 @@ public class Shadowsocks extends UnifiedSherlockPreferenceActivity
}
public void reset() {
- StringBuilder sb = new StringBuilder();
- sb.append(Utils.getIptables()).append(" -t nat -F OUTPUT").append("\n");
- sb.append("kill -9 `cat /data/data/com.github.shadowsocks/pdnsd.pid`").append("\n");
- sb.append("kill -9 `cat /data/data/com.github.shadowsocks/redsocks.pid`").append("\n");
- sb.append("kill -9 `cat /data/data/com.github.shadowsocks/shadowsocks.pid`").append("\n");
- sb.append("kill -9 `cat /data/data/com.github.shadowsocks/polipo.pid`").append("\n");
- sb.append("killall -9 pdnsd").append("\n");
- sb.append("killall -9 redsocks").append("\n");
- sb.append("killall -9 shadowsocks").append("\n");
- sb.append("killall -9 polipo").append("\n");
- Utils.runRootCommand(sb.toString());
+
+ crash_recovery();
copyAssets("");
copyAssets(Utils.getABI());
@@ -462,11 +461,7 @@ public class Shadowsocks extends UnifiedSherlockPreferenceActivity
}
};
- try {
- stopService(new Intent(this, ShadowsocksService.class));
- } catch (Exception e) {
- // Nothing
- }
+ stopService(new Intent(this, ShadowsocksService.class));
new Thread() {
@Override
diff --git a/src/com/github/shadowsocks/ShadowsocksReceiver.java b/src/com/github/shadowsocks/ShadowsocksReceiver.java
index 7aad22ff..72577deb 100644
--- a/src/com/github/shadowsocks/ShadowsocksReceiver.java
+++ b/src/com/github/shadowsocks/ShadowsocksReceiver.java
@@ -52,6 +52,14 @@ public class ShadowsocksReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
+ if (intent != null) {
+ final String action = intent.getAction();
+ if (action.equals(Intent.ACTION_SHUTDOWN)) {
+ context.stopService(new Intent(context, ShadowsocksService.class));
+ return;
+ }
+ }
+
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
String versionName;
try {