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 {