diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index a0a58f68..385af740 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,6 +13,14 @@
+
+
+
+
-
-
+
+
+
+
+
+
+
diff --git a/app/src/main/java/eu/faircode/netguard/ServiceTileMain.java b/app/src/main/java/eu/faircode/netguard/ServiceTileMain.java
index e3468eed..fe3262fd 100644
--- a/app/src/main/java/eu/faircode/netguard/ServiceTileMain.java
+++ b/app/src/main/java/eu/faircode/netguard/ServiceTileMain.java
@@ -69,7 +69,7 @@ public class ServiceTileMain extends TileService implements SharedPreferences.On
// 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);
+ PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(WidgetAdmin.INTENT_ON), PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(pi);
// Check state
diff --git a/app/src/main/java/eu/faircode/netguard/Widget.java b/app/src/main/java/eu/faircode/netguard/Widget.java
index c59a5209..ffeda78e 100644
--- a/app/src/main/java/eu/faircode/netguard/Widget.java
+++ b/app/src/main/java/eu/faircode/netguard/Widget.java
@@ -19,7 +19,6 @@ package eu.faircode.netguard;
Copyright 2015-2016 by Marcel Bokhorst (M66B)
*/
-import android.app.AlarmManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
@@ -28,69 +27,18 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.VpnService;
-import android.os.Build;
-import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.RemoteViews;
-import java.util.Date;
-
public class Widget extends AppWidgetProvider {
private static final String TAG = "NetGuard.Widget";
- public static final String INTENT_ON = "eu.faircode.netguard.APPWIDGET_ON";
- private static final String INTENT_OFF = "eu.faircode.netguard.APPWIDGET_OFF";
-
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
update(appWidgetIds, appWidgetManager, context);
}
- @Override
- public void onReceive(Context context, Intent intent) {
- super.onReceive(context, intent);
-
- Log.i(TAG, "Received " + intent);
- Util.logExtras(intent);
-
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
-
- // Cancel set alarm
- AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
- PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(INTENT_ON), PendingIntent.FLAG_UPDATE_CURRENT);
- am.cancel(pi);
-
- // Vibrate
- if (INTENT_OFF.equals(intent.getAction()) || INTENT_ON.equals(intent.getAction())) {
- Vibrator vs = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
- if (vs.hasVibrator())
- vs.vibrate(50);
- }
-
- if (INTENT_OFF.equals(intent.getAction())) {
- prefs.edit().putBoolean("enabled", false).apply();
- ServiceSinkhole.stop("widget", context);
-
- // 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);
- }
-
- } else if (INTENT_ON.equals(intent.getAction()))
- try {
- prefs.edit().putBoolean("enabled", true).apply();
- ServiceSinkhole.start("widget", context);
- } catch (Throwable ex) {
- Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
- }
- }
-
private static void update(int[] appWidgetIds, AppWidgetManager appWidgetManager, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean enabled = prefs.getBoolean("enabled", false);
@@ -99,7 +47,7 @@ public class Widget extends AppWidgetProvider {
try {
PendingIntent pi;
if (VpnService.prepare(context) == null)
- pi = PendingIntent.getBroadcast(context, 0, new Intent(enabled ? INTENT_OFF : INTENT_ON), PendingIntent.FLAG_UPDATE_CURRENT);
+ pi = PendingIntent.getBroadcast(context, 0, new Intent(enabled ? WidgetAdmin.INTENT_OFF : WidgetAdmin.INTENT_ON), PendingIntent.FLAG_UPDATE_CURRENT);
else
pi = PendingIntent.getActivity(context, 0, new Intent(context, ActivityMain.class), PendingIntent.FLAG_UPDATE_CURRENT);
diff --git a/app/src/main/java/eu/faircode/netguard/WidgetAdmin.java b/app/src/main/java/eu/faircode/netguard/WidgetAdmin.java
new file mode 100644
index 00000000..a5ca69d2
--- /dev/null
+++ b/app/src/main/java/eu/faircode/netguard/WidgetAdmin.java
@@ -0,0 +1,83 @@
+package eu.faircode.netguard;
+
+/*
+ This file is part of NetGuard.
+
+ NetGuard is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ NetGuard is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with NetGuard. If not, see .
+
+ Copyright 2015-2016 by Marcel Bokhorst (M66B)
+*/
+
+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.os.Vibrator;
+import android.preference.PreferenceManager;
+import android.util.Log;
+
+import java.util.Date;
+
+public class WidgetAdmin extends Receiver {
+ private static final String TAG = "NetGuard.Widget";
+
+ public static final String INTENT_ON = "eu.faircode.netguard.APPWIDGET_ON";
+ public static final String INTENT_OFF = "eu.faircode.netguard.APPWIDGET_OFF";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ super.onReceive(context, intent);
+
+ Log.i(TAG, "Received " + intent);
+ Util.logExtras(intent);
+
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+ // Cancel set alarm
+ AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(INTENT_ON), PendingIntent.FLAG_UPDATE_CURRENT);
+ am.cancel(pi);
+
+ // Vibrate
+ if (INTENT_OFF.equals(intent.getAction()) || INTENT_ON.equals(intent.getAction())) {
+ Vibrator vs = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ if (vs.hasVibrator())
+ vs.vibrate(50);
+ }
+
+ if (INTENT_OFF.equals(intent.getAction())) {
+ prefs.edit().putBoolean("enabled", false).apply();
+ ServiceSinkhole.stop("widget", context);
+
+ // 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);
+ }
+
+ } else if (INTENT_ON.equals(intent.getAction()))
+ try {
+ prefs.edit().putBoolean("enabled", true).apply();
+ ServiceSinkhole.start("widget", context);
+ } catch (Throwable ex) {
+ Log.e(TAG, ex.toString() + "\n" + Log.getStackTraceString(ex));
+ }
+ }
+}