mirror of
https://github.com/M66B/NetGuard.git
synced 2025-02-24 15:21:19 +00:00
Auto enable after tile disable
This commit is contained in:
parent
085d5621ae
commit
fd34fb0e87
2 changed files with 27 additions and 3 deletions
|
@ -21,6 +21,10 @@ package eu.faircode.netguard;
|
||||||
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
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.content.SharedPreferences;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
@ -28,6 +32,8 @@ import android.service.quicksettings.Tile;
|
||||||
import android.service.quicksettings.TileService;
|
import android.service.quicksettings.TileService;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.N)
|
@TargetApi(Build.VERSION_CODES.N)
|
||||||
public class ServiceTile extends TileService implements SharedPreferences.OnSharedPreferenceChangeListener {
|
public class ServiceTile extends TileService implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
private static final String TAG = "NetGuard.Tile";
|
private static final String TAG = "NetGuard.Tile";
|
||||||
|
@ -52,7 +58,7 @@ public class ServiceTile extends TileService implements SharedPreferences.OnShar
|
||||||
@Override
|
@Override
|
||||||
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
|
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
|
||||||
if ("enabled".equals(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().setState(enabled ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE);
|
||||||
getQsTile().updateTile();
|
getQsTile().updateTile();
|
||||||
}
|
}
|
||||||
|
@ -66,12 +72,30 @@ public class ServiceTile extends TileService implements SharedPreferences.OnShar
|
||||||
|
|
||||||
public void onClick() {
|
public void onClick() {
|
||||||
Log.i(TAG, "Click");
|
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);
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||||
boolean enabled = !prefs.getBoolean("enabled", false);
|
boolean enabled = !prefs.getBoolean("enabled", false);
|
||||||
prefs.edit().putBoolean("enabled", enabled).apply();
|
prefs.edit().putBoolean("enabled", enabled).apply();
|
||||||
if (enabled)
|
if (enabled)
|
||||||
ServiceSinkhole.start("tile", this);
|
ServiceSinkhole.start("tile", this);
|
||||||
else
|
else {
|
||||||
ServiceSinkhole.stop("tile", this);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ import java.util.Date;
|
||||||
public class Widget extends AppWidgetProvider {
|
public class Widget extends AppWidgetProvider {
|
||||||
private static final String TAG = "NetGuard.Widget";
|
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";
|
private static final String INTENT_OFF = "eu.faircode.netguard.APPWIDGET_OFF";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue