From 79a32e69c8d78f64fcd678f575a3aa570b90a597 Mon Sep 17 00:00:00 2001 From: Nathan Freitas Date: Thu, 21 Aug 2014 09:46:00 -0400 Subject: [PATCH] make sure control connection is not null on rebind - also tune app conflict checker code for Samsung Link --- src/org/torproject/android/Orbot.java | 92 +++++++++++++++++---------- 1 file changed, 60 insertions(+), 32 deletions(-) diff --git a/src/org/torproject/android/Orbot.java b/src/org/torproject/android/Orbot.java index efb1049d..0de689db 100644 --- a/src/org/torproject/android/Orbot.java +++ b/src/org/torproject/android/Orbot.java @@ -297,17 +297,21 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic SharedPreferences sprefs = TorServiceUtils.getSharedPrefs(getApplicationContext()); boolean showAppConflict = sprefs.getBoolean("pref_show_conflict",true); - - String[] badApps = {"com.sec.msc.nts.android.proxy"}; + + String[] badApps = {"com.sec.msc.nts.android.proxy|com.sec.msc.nts.android.proxy","com.sec.pcw|Samsung Link"}; for (String badApp : badApps) { - if (appInstalledOrNot(badApp)) + String[] badAppParts = badApp.split("|"); + + if (appInstalledOrNot(badAppParts[0])) { + String msg = getString(R.string.please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_) + badAppParts[1]; + if (showAppConflict) - showAlert(getString(R.string.app_conflict),getString(R.string.please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_) + badApp,true); + showAlert(getString(R.string.app_conflict),msg,true); - appendLogTextAndScroll(getString(R.string.please_disable_this_app_in_android_settings_apps_if_you_are_having_problems_with_orbot_) + badApp); + appendLogTextAndScroll(msg); } } @@ -422,19 +426,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic //terminology but also making sure there are clear distinctions in control stopTor(); - if (mConnection != null) - unbindService(mConnection); - - //perhaps this should be referenced as INTENT_TOR_SERVICE as in startService - stopService(new Intent(this,TorService.class)); - - //clears all notifications from the status bar - NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - mNotificationManager.cancelAll(); - - mConnection = null; - mService = null; - + onDestroy(); } catch (RemoteException e) { Log.w(TAG, e); @@ -647,6 +639,8 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic } + setIntent(null); + updateStatus (""); } @@ -768,11 +762,51 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic + + @Override + protected void onActivityResult(int request, int response, Intent data) { + super.onActivityResult(request, response, data); + + if (request == 1 && response == RESULT_OK) + { + if (data != null && data.getBooleanExtra("transproxywipe", false)) + { + try { + + boolean result = mService.flushTransProxy(); + + if (result) + { + + Toast.makeText(this, "Transparent proxy rules flushed!", Toast.LENGTH_SHORT).show(); + + } + else + { + + Toast.makeText(this, "You do not have ROOT access enabled", Toast.LENGTH_SHORT).show(); + + } + } catch (RemoteException e) { + e.printStackTrace(); + } + } + } + } + + + @Override protected void onResume() { super.onResume(); - if (mService != null) + setLocale(); + + if (mService == null) + { + startService(); + } + else { try { @@ -781,17 +815,16 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic if (torStatus != TorServiceConstants.STATUS_ON) mService.processSettings(); - setLocale(); handleIntents(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } - } - - updateStatus(""); + updateStatus(""); + } + } AlertDialog aDialog = null; @@ -1143,7 +1176,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic // we should use this to activity monitor unbind so that we don't have to call // bindService() a million times - private ServiceConnection mConnection = new ServiceConnection() { + private final ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { @@ -1154,7 +1187,6 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic // representation of that from the raw service object. mService = ITorService.Stub.asInterface(service); - // We want to monitor the service for as long as we are // connected to it. try { @@ -1163,10 +1195,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic if (autoStartFromIntent) { - - startTor(); - - + startTor(); } handleIntents(); @@ -1180,9 +1209,7 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic // so there is no need to do anything here. Log.d(TAG,"error registering callback to service",e); } - - } @@ -1195,6 +1222,8 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic Log.d(TAG,"service was disconnected"); } + + }; private void setLocale () @@ -1220,7 +1249,6 @@ public class Orbot extends ActionBarActivity implements TorConstants, OnLongClic if (mConnection != null && mService != null) { unbindService(mConnection); - mConnection = null; mService = null; } }