| Index: src/org/adblockplus/android/ProxyService.java |
| =================================================================== |
| --- a/src/org/adblockplus/android/ProxyService.java |
| +++ b/src/org/adblockplus/android/ProxyService.java |
| @@ -40,6 +40,7 @@ |
| import android.content.SharedPreferences; |
| import android.content.SharedPreferences.OnSharedPreferenceChangeListener; |
| import android.content.pm.PackageManager.NameNotFoundException; |
| +import android.content.res.Resources; |
| import android.net.ConnectivityManager; |
| import android.net.NetworkInfo; |
| import android.os.Binder; |
| @@ -114,10 +115,11 @@ |
| // Get port for local proxy |
| SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); |
| + Resources resources = getResources(); |
| String p = prefs.getString(getString(R.string.pref_port), null); |
| try |
| { |
| - port = p != null ? Integer.valueOf(p) : getResources().getInteger(R.integer.def_port); |
| + port = p != null ? Integer.valueOf(p) : resources.getInteger(R.integer.def_port); |
| } |
| catch (NumberFormatException e) |
| { |
| @@ -261,18 +263,30 @@ |
| notrafficHandler = new Handler(); |
| notrafficHandler.postDelayed(noTraffic, NO_TRAFFIC_TIMEOUT); |
| } |
| - // Lock service |
| + // Prepare notification |
| ongoingNotification = new Notification(); |
| ongoingNotification.when = 0; |
| contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, Preferences.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK), 0); |
| ongoingNotification.icon = R.drawable.ic_stat_blocking; |
| ongoingNotification.setLatestEventInfo(getApplicationContext(), getText(R.string.app_name), msg, contentIntent); |
| + // Lock service |
| + if (prefs.getBoolean(getString(R.string.pref_priority), resources.getBoolean(R.bool.def_priority))) |
| + { |
| + startForeground(ONGOING_NOTIFICATION_ID, ongoingNotification); |
| + } |
| + |
| sendBroadcast(new Intent(BROADCAST_STATE_CHANGED).putExtra("enabled", true).putExtra("port", port).putExtra("manual", isManual())); |
| Log.i(TAG, "Service started"); |
| } |
| @Override |
| + public int onStartCommand(Intent intent, int flags, int startId) |
| + { |
| + return START_STICKY; |
| + } |
| + |
| + @Override |
| public void onDestroy() |
| { |
| super.onDestroy(); |
| @@ -317,6 +331,9 @@ |
| // Stop engine if not in interactive mode |
| AdblockPlus.getApplication().stopEngine(false); |
| + // Release service lock |
| + stopForeground(true); |
| + |
| Log.i(TAG, "Service stopped"); |
| } |
| @@ -426,6 +443,18 @@ |
| @Override |
| public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) |
| { |
| + if (getString(R.string.pref_priority).equals(key)) |
| + { |
| + if (sharedPreferences.getBoolean(key, false)) |
| + { |
| + startForeground(ONGOING_NOTIFICATION_ID, ongoingNotification); |
| + } |
| + else |
| + { |
| + stopForeground(true); |
| + } |
| + return; |
| + } |
| if (hasNativeProxy) |
| { |
| String ketHost = getString(R.string.pref_proxyhost); |