Auto enable after tile disable

This commit is contained in:
M66B 2016-07-19 13:30:48 +02:00
parent 085d5621ae
commit fd34fb0e87
2 changed files with 27 additions and 3 deletions

View File

@ -21,6 +21,10 @@ package eu.faircode.netguard;
import android.annotation.TargetApi;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.preference.PreferenceManager;
@ -28,6 +32,8 @@ import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.util.Log;
import java.util.Date;
@TargetApi(Build.VERSION_CODES.N)
public class ServiceTile extends TileService implements SharedPreferences.OnSharedPreferenceChangeListener {
private static final String TAG = "NetGuard.Tile";
@ -52,7 +58,7 @@ public class ServiceTile extends TileService implements SharedPreferences.OnShar
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if ("enabled".equals(key)) {
boolean enabled = prefs.getBoolean("enabled", false);
boolean enabled = prefs.getBoolean(key, false);
getQsTile().setState(enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
getQsTile().updateTile();
}
@ -66,12 +72,30 @@ public class ServiceTile extends TileService implements SharedPreferences.OnShar
public void onClick() {
Log.i(TAG, "Click");
// Cancel set alarm
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(Widget.INTENT_ON), PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pi);
// Check state
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean enabled = !prefs.getBoolean("enabled", false);
prefs.edit().putBoolean("enabled", enabled).apply();
if (enabled)
ServiceSinkhole.start("tile", this);
else
else {
ServiceSinkhole.stop("tile", this);
// Auto enable
int auto = Integer.parseInt(prefs.getString("auto_enable", "0"));
if (auto > 0) {
Log.i(TAG, "Scheduling enabled after minutes=" + auto);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
am.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
else
am.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
}
}
}
}

View File

@ -39,7 +39,7 @@ import java.util.Date;
public class Widget extends AppWidgetProvider {
private static final String TAG = "NetGuard.Widget";
private static final String INTENT_ON = "eu.faircode.netguard.APPWIDGET_ON";
public static final String INTENT_ON = "eu.faircode.netguard.APPWIDGET_ON";
private static final String INTENT_OFF = "eu.faircode.netguard.APPWIDGET_OFF";
@Override