mirror of https://github.com/M66B/NetGuard.git
Auto enabled after widget off
This commit is contained in:
parent
433113e18e
commit
586092abe2
|
@ -87,11 +87,19 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
getSupportActionBar().setTitle(R.string.menu_settings);
|
||||
}
|
||||
|
||||
private PreferenceScreen getPreferenceScreen() {
|
||||
return ((PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content)).getPreferenceScreen();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostCreate(Bundle savedInstanceState) {
|
||||
super.onPostCreate(savedInstanceState);
|
||||
PreferenceFragment frag = (PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);
|
||||
PreferenceScreen screen = frag.getPreferenceScreen();
|
||||
PreferenceScreen screen = getPreferenceScreen();
|
||||
|
||||
// Handle auto enable
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
Preference pref_auto_enable = screen.findPreference("auto_enable");
|
||||
pref_auto_enable.setTitle(getString(R.string.setting_auto, prefs.getString("auto_enable", "0")));
|
||||
|
||||
// Handle export
|
||||
Preference pref_export = screen.findPreference("export");
|
||||
|
@ -150,6 +158,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
PreferenceScreen screen = getPreferenceScreen();
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
|
||||
// TODO: check permision for whitelist_roaming
|
||||
|
@ -163,19 +172,16 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
prefs.edit().putBoolean("unmetered_3g", false).apply();
|
||||
prefs.edit().putBoolean("unmetered_4g", false).apply();
|
||||
|
||||
PreferenceFragment frag = (PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("unmetered_2g")).setChecked(false);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("unmetered_3g")).setChecked(false);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("unmetered_4g")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("unmetered_2g")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("unmetered_3g")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("unmetered_4g")).setChecked(false);
|
||||
}
|
||||
|
||||
// Check if permission was revoked
|
||||
if (prefs.getBoolean("national_roaming", false))
|
||||
if (!Util.hasPhoneStatePermission(this)) {
|
||||
prefs.edit().putBoolean("national_roaming", false).apply();
|
||||
|
||||
PreferenceFragment frag = (PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("national_roaming")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("national_roaming")).setChecked(false);
|
||||
}
|
||||
|
||||
// Listen for preference changes
|
||||
|
@ -236,7 +242,11 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
} else
|
||||
SinkholeService.reload("other", "setting changed", this);
|
||||
|
||||
} else if ("unmetered_2g".equals(name) ||
|
||||
} else if ("auto_enable".equals(name))
|
||||
getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_auto, prefs.getString(name, "0")));
|
||||
|
||||
|
||||
else if ("unmetered_2g".equals(name) ||
|
||||
"unmetered_3g".equals(name) ||
|
||||
"unmetered_4g".equals(name)) {
|
||||
if (prefs.getBoolean(name, false)) {
|
||||
|
@ -266,6 +276,8 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
|
||||
PreferenceScreen screen = getPreferenceScreen();
|
||||
|
||||
if (requestCode == REQUEST_METERED)
|
||||
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
|
||||
SinkholeService.reload("other", "permission granted", this);
|
||||
|
@ -274,11 +286,9 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
prefs.edit().putBoolean("unmetered_2g", false).apply();
|
||||
prefs.edit().putBoolean("unmetered_3g", false).apply();
|
||||
prefs.edit().putBoolean("unmetered_4g", false).apply();
|
||||
|
||||
PreferenceFragment frag = (PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("unmetered_2g")).setChecked(false);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("unmetered_3g")).setChecked(false);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("unmetered_4g")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("unmetered_2g")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("unmetered_3g")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("unmetered_4g")).setChecked(false);
|
||||
}
|
||||
|
||||
else if (requestCode == REQUEST_ROAMING_NATIONAL)
|
||||
|
@ -287,9 +297,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
else {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.edit().putBoolean("national_roaming", false).apply();
|
||||
|
||||
PreferenceFragment frag = (PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("national_roaming")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("national_roaming")).setChecked(false);
|
||||
}
|
||||
|
||||
else if (requestCode == REQUEST_ROAMING_INTERNATIONAL)
|
||||
|
@ -298,9 +306,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
else {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.edit().putBoolean("whitelist_roaming", false).apply();
|
||||
|
||||
PreferenceFragment frag = (PreferenceFragment) getFragmentManager().findFragmentById(android.R.id.content);
|
||||
((SwitchPreference) frag.getPreferenceScreen().findPreference("whitelist_roaming")).setChecked(false);
|
||||
((SwitchPreference) screen.findPreference("whitelist_roaming")).setChecked(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -519,6 +525,13 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
serializer.attribute(null, "value", value.toString());
|
||||
serializer.endTag(null, "setting");
|
||||
|
||||
} else if (value instanceof String) {
|
||||
serializer.startTag(null, "setting");
|
||||
serializer.attribute(null, "key", key);
|
||||
serializer.attribute(null, "type", "string");
|
||||
serializer.attribute(null, "value", value.toString());
|
||||
serializer.endTag(null, "setting");
|
||||
|
||||
} else
|
||||
Log.e(TAG, "Unknown key=" + key);
|
||||
}
|
||||
|
@ -564,6 +577,8 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
editor.putBoolean(key, (Boolean) value);
|
||||
else if (value instanceof Integer)
|
||||
editor.putInt(key, (Integer) value);
|
||||
else if (value instanceof String)
|
||||
editor.putString(key, (String) value);
|
||||
else
|
||||
Log.e(TAG, "Unknown type=" + value.getClass());
|
||||
}
|
||||
|
@ -623,6 +638,8 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
current.put(key, Boolean.parseBoolean(value));
|
||||
else if ("integer".equals(type))
|
||||
current.put(key, Integer.parseInt(value));
|
||||
else if ("string".equals(type))
|
||||
current.put(key, value);
|
||||
else
|
||||
Log.e(TAG, "Unknown type key=" + key);
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ package eu.faircode.netguard;
|
|||
Copyright 2015 by Marcel Bokhorst (M66B)
|
||||
*/
|
||||
|
||||
import android.app.AlarmManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.appwidget.AppWidgetProvider;
|
||||
|
@ -31,6 +32,8 @@ 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";
|
||||
|
||||
|
@ -51,10 +54,22 @@ public class Widget extends AppWidgetProvider {
|
|||
|
||||
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);
|
||||
|
||||
if (INTENT_OFF.equals(intent.getAction())) {
|
||||
prefs.edit().putBoolean("enabled", false).apply();
|
||||
SinkholeService.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);
|
||||
am.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + auto * 60 * 1000L, pi);
|
||||
}
|
||||
|
||||
} else if (INTENT_ON.equals(intent.getAction()))
|
||||
try {
|
||||
if (VpnService.prepare(context) == null) {
|
||||
|
|
|
@ -15,26 +15,31 @@ These issues are caused by bugs in Android, or in the software provided by the m
|
|||
<string name="menu_support">Support</string>
|
||||
<string name="menu_about">About</string>
|
||||
|
||||
<string name="setting_defaults">Defaults</string>
|
||||
<string name="setting_whitelist_wifi">Block Wi-Fi</string>
|
||||
<string name="setting_whitelist_other">Block mobile</string>
|
||||
<string name="setting_screen_wifi">Allow Wi-Fi when screen on</string>
|
||||
<string name="setting_screen_other">Allow mobile when screen on</string>
|
||||
<string name="setting_whitelist_roaming">Block roaming</string>
|
||||
|
||||
<string name="setting_options">Options</string>
|
||||
<string name="setting_system">Manage system applications</string>
|
||||
<string name="setting_auto">Auto enable after %1$s minutes</string>
|
||||
<string name="setting_dark">Use dark theme</string>
|
||||
<string name="setting_metered">Handle metered Wi-Fi networks</string>
|
||||
<string name="setting_metered_2g">Consider 2G unmetered</string>
|
||||
<string name="setting_metered_3g">Consider 3G unmetered</string>
|
||||
<string name="setting_metered_4g">Consider LTE unmetered</string>
|
||||
<string name="setting_national_roaming">Ignore national roaming</string>
|
||||
<string name="setting_system">Manage system applications</string>
|
||||
<string name="setting_dark">Use dark theme</string>
|
||||
|
||||
<string name="setting_backup">Backup</string>
|
||||
<string name="setting_export">Export settings</string>
|
||||
<string name="setting_import">Import settings</string>
|
||||
<string name="setting_defaults">Defaults</string>
|
||||
<string name="setting_options">Options</string>
|
||||
<string name="setting_backup">Backup</string>
|
||||
|
||||
<string name="setting_technical">Technical information</string>
|
||||
|
||||
<string name="summary_system">Define rules for system applications (for experts)</string>
|
||||
<string name="summary_auto">After disabling using the widget, automatically enable NetGuard again after the selected number of minutes\nEnter zero to disable this option</string>
|
||||
<string name="summary_metered">Apply mobile network rules to metered (paid, tethered) Wi-Fi networks</string>
|
||||
<string name="summary_metered_2g">Apply Wi-Fi network rules for 2G data connections</string>
|
||||
<string name="summary_metered_3g">Apply Wi-Fi network rules for 3G data connections</string>
|
||||
|
|
|
@ -32,6 +32,11 @@
|
|||
android:key="manage_system"
|
||||
android:summary="@string/summary_system"
|
||||
android:title="@string/setting_system" />
|
||||
<EditTextPreference
|
||||
android:defaultValue="0"
|
||||
android:inputType="number"
|
||||
android:key="auto_enable"
|
||||
android:summary="@string/summary_auto" />
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="dark_theme"
|
||||
|
|
Loading…
Reference in New Issue