Added option to start as foreground service

This commit is contained in:
M66B 2015-11-08 08:21:34 +01:00
parent 115ff6cf5e
commit c3514d69df
17 changed files with 87 additions and 4 deletions

View File

@ -114,6 +114,13 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
else if ("dark_theme".equals(name))
recreate();
else if ("foreground".equals(name)) {
if (prefs.getBoolean("enabled", false)) {
SinkholeService.stop(this);
SinkholeService.start(this);
}
}
}
@Override

View File

@ -46,12 +46,14 @@ import java.nio.ByteOrder;
public class SinkholeService extends VpnService {
private static final String TAG = "NetGuard.Service";
private boolean foreground;
private boolean last_roaming;
private ParcelFileDescriptor vpn = null;
private boolean debug = false;
private Thread thread = null;
private static final int NOTIFY_DISABLED = 1;
private static final int NOTIFY_FOREGROUND = 1;
private static final int NOTIFY_DISABLED = 2;
private static final String EXTRA_COMMAND = "Command";
@ -59,6 +61,8 @@ public class SinkholeService extends VpnService {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
// Get command
final Command cmd = (intent == null ? Command.start : (Command) intent.getSerializableExtra(EXTRA_COMMAND));
Log.i(TAG, "Start intent=" + intent + " command=" + cmd + " vpn=" + (vpn != null));
@ -71,6 +75,10 @@ public class SinkholeService extends VpnService {
Log.i(TAG, "Executing command=" + cmd + " vpn=" + (vpn != null));
switch (cmd) {
case start:
if (prefs.getBoolean("foreground", false)) {
foreground = true;
startForeground(NOTIFY_FOREGROUND, getForegroundNotification());
}
if (vpn == null) {
last_roaming = Util.isRoaming(SinkholeService.this);
vpn = startVPN();
@ -96,6 +104,10 @@ public class SinkholeService extends VpnService {
stopVPN(vpn);
vpn = null;
}
if (foreground) {
foreground = false;
stopForeground(true);
}
Widget.updateWidgets(SinkholeService.this);
stopSelf();
break;
@ -344,15 +356,32 @@ public class SinkholeService extends VpnService {
super.onRevoke();
}
private Notification getForegroundNotification() {
Intent main = new Intent(this, ActivityMain.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, main, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_security_white_24dp)
.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.msg_started))
.setContentIntent(pi)
.setCategory(Notification.CATEGORY_STATUS)
.setVisibility(Notification.VISIBILITY_SECRET)
.setColor(ContextCompat.getColor(this, R.color.colorAccent))
.setAutoCancel(true);
return notification.build();
}
private void showDisabledNotification() {
Intent riMain = new Intent(this, ActivityMain.class);
PendingIntent piMain = PendingIntent.getActivity(this, 0, riMain, PendingIntent.FLAG_CANCEL_CURRENT);
Intent main = new Intent(this, ActivityMain.class);
PendingIntent pi = PendingIntent.getActivity(this, 0, main, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_security_white_24dp)
.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.msg_revoked))
.setContentIntent(piMain)
.setContentIntent(pi)
.setCategory(Notification.CATEGORY_STATUS)
.setVisibility(Notification.VISIBILITY_SECRET)
.setColor(ContextCompat.getColor(this, R.color.colorAccent))

View File

@ -19,14 +19,17 @@ These issues are caused by bugs in Android, or in the software provided by the m
<string name="setting_system">Manage system applications</string>
<string name="setting_dark">استخدام الثيم الداكن</string>
<string name="setting_indicators">Show state indicators</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Export settings</string>
<string name="setting_import">Import settings</string>
<string name="setting_vpn">فتح إعدادات الـVPN</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">هل أنت متأكد؟</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">التطبيق غير مُفعّل, قم بتفعيل التطبيق من الخيار أعلاه.</string>
<string name="msg_revoked">NetGuard has been disabled</string>
<string name="msg_completed">Action completed</string>

View File

@ -18,14 +18,17 @@ Das wird von Fehlern in Android oder in Software vom Hersteller verursacht. Bitt
<string name="setting_system">System Apps anzeigen</string>
<string name="setting_dark">Verwende dunkles Theme</string>
<string name="setting_indicators">Zustandsanzeigen</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Exportiere Einstellungen</string>
<string name="setting_import">Importiere Einstellungen</string>
<string name="setting_vpn">Öffne Android VPN Einstellungen</string>
<string name="summary_system">Regeln für System Apps definieren, nur für Experten</string>
<string name="summary_indicators">Netzwerk Typ und ob Netzwerk getaktet ist in Action Bar anzeigen</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Bist du sicher?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard ist deaktiviert, verwende den Schalter um NetGuard zu aktivieren</string>
<string name="msg_revoked">NetGuard wurde deaktiviert</string>
<string name="msg_completed">Aktion abgeschlossen</string>

View File

@ -19,14 +19,17 @@ Esto es causado por errores en Android, o por el software proporcionado por el f
<string name="setting_system">Administrar aplicaciones de sistema</string>
<string name="setting_dark">Usar tema oscuro</string>
<string name="setting_indicators">Show state indicators</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Exportar configuración</string>
<string name="setting_import">Importar configuración</string>
<string name="setting_vpn">Abrir configuración VPN de Android</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">¿Estás seguro?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard está deshabilitado, utiliza el interruptor de arriba para habilitar a NetGuard</string>
<string name="msg_revoked">NetGuard ha sido deshabilitado</string>
<string name="msg_completed">Acción completada</string>

View File

@ -19,14 +19,17 @@ Ceci est causé par des bugs dans Android, ou dans le logiciel fourni par le con
<string name="setting_system">Gérer les applications système</string>
<string name="setting_dark">Utiliser le thème sombre</string>
<string name="setting_indicators">Show state indicators</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Exporter paramètres</string>
<string name="setting_import">Importer paramètres</string>
<string name="setting_vpn">Ouvrir les paramètres VPN</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Etes-vous sûr ?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard est désactivé, utilisez le bouton ci-dessus pour activer NetGuard</string>
<string name="msg_revoked">NetGuard a été désactivé</string>
<string name="msg_completed">Action completed</string>

View File

@ -20,14 +20,17 @@ Ció è causato da alcuni bug contenuti in Android, o in programmi forniti dal p
<string name="setting_system">Gestisci applicazioni di sistema</string>
<string name="setting_dark">Usa il tema scuro</string>
<string name="setting_indicators">Mostra indicatori di stato</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Esporta impostazioni</string>
<string name="setting_import">Importa impostazioni</string>
<string name="setting_vpn">Apri impostazioni VPN</string>
<string name="summary_system">Definisci regole per le applicazioni di sistema, solo per esperti</string>
<string name="summary_indicators">Mostra, nella action bar, il tipo di rete e se la rete è a consumo</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Sei sicuro?</string>
<string name="msg_started">Regole applicate</string>
<string name="msg_disabled">NetGuard è disabilitata, usa lo switch per abilitarla nuovamente</string>
<string name="msg_revoked">NetGuard è stata disabilitata</string>
<string name="msg_completed">Azione completata</string>

View File

@ -19,6 +19,7 @@
<string name="setting_system">システムアプリケーションの管理</string>
<string name="setting_dark">ダークテーマを使用する</string>
<string name="setting_indicators">状態インジケーターを表示</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">設定をエクスポート</string>
<string name="setting_import">設定をインポート</string>
<string name="setting_vpn">Android VPN 設定を開く</string>
@ -26,8 +27,10 @@
<string name="summary_system">システムアプリケーションのルールを定義します (エキスパート向け)</string>
<string name="summary_indicators">アクションバーにネットワークの種類と計測しているかどうかを表示します</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">よろしいですか?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard は無効です。NetGuard を有効にするには上のスイッチを使用してください</string>
<string name="msg_revoked">NetGuard は無効になりました</string>
<string name="msg_completed">操作を完了しました</string>

View File

@ -19,14 +19,17 @@ These issues are caused by bugs in Android, or in the software provided by the m
<string name="setting_system">Manage system applications</string>
<string name="setting_dark">어두운 테마 사용</string>
<string name="setting_indicators">Show state indicators</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Export settings</string>
<string name="setting_import">Import settings</string>
<string name="setting_vpn">Android VPN 설정 열기</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">계속 하시겠습니까?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">넷가드가 해제되어 있습니다. 상단 스위치를 사용해 넷가드를 활성화하세요.</string>
<string name="msg_revoked">넷가드가 해제되었습니다</string>
<string name="msg_completed">Action completed</string>

View File

@ -19,14 +19,17 @@ These issues are caused by bugs in Android, or in the software provided by the m
<string name="setting_system">Beheer systeemapplicaties</string>
<string name="setting_dark">Gebruik donker thema</string>
<string name="setting_indicators">Toon toestand indicatoren</string>
<string name="setting_foreground">Start als voorgrondservice</string>
<string name="setting_export">Exporteer instellingen</string>
<string name="setting_import">Importeer instellingen</string>
<string name="setting_vpn">Open Android VPN-instellingen</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Weet u het zeker?</string>
<string name="msg_started">Regels worden afgedwongen</string>
<string name="msg_disabled">NetGuard staat uit, gebruik de schakelaar boven om NetGuard aan te zetten</string>
<string name="msg_revoked">NetGuard is uitgezet</string>
<string name="msg_completed">Actie uitgevoerd</string>

View File

@ -19,14 +19,17 @@ Problemy te są spowodowane błędami w samym Androidzie, lub oprogramowaniu dos
<string name="setting_system">Zarządzaj aplikacjami systemowymi</string>
<string name="setting_dark">Użyj ciemnej skórki</string>
<string name="setting_indicators">Pokaż wskaźniki stanu</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Eksport ustawień</string>
<string name="setting_import">Import ustawień</string>
<string name="setting_vpn">Otwórz ustawienia VPN w Androidzie</string>
<string name="summary_system">Stwórz reguły dla aplikacji systemowych(zaawansowane)</string>
<string name="summary_indicators">Jeśli sieć jest mierzona, wyświetlaj typ sieci w pasku aplikacji</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Na pewno?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard jest wyłączony, użyj przełącznika u góry by go uruchomić</string>
<string name="msg_revoked">NetGuard został wyłączony</string>
<string name="msg_completed">Wykonano</string>

View File

@ -19,14 +19,17 @@ Acest lucru este cauzat de bug-uri in Android sau in software-ul pus la dispozit
<string name="setting_system">Gestionati aplicatiile de sistem</string>
<string name="setting_dark">Foloseste tema intunecata</string>
<string name="setting_indicators">Arata indicatorii de stare</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Exporta setari</string>
<string name="setting_import">Importa setari</string>
<string name="setting_vpn">Deschide setari VPN Android</string>
<string name="summary_system">Defineste reguli pentru aplicatiile de sistem, setare expert</string>
<string name="summary_indicators">Arata tipul retelei conectate precum si daca aceasta este una contorizata</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Esti sigur?</string>
<string name="msg_started">Limitari activate</string>
<string name="msg_disabled">NetGuard este momentan dezactivat, foloseste comutatorul de mai sus pentru a il activa</string>
<string name="msg_revoked">NetGuard a fost dezactivat</string>
<string name="msg_completed">Setari aplicate</string>

View File

@ -17,14 +17,17 @@
<string name="setting_system">Управлять системными приложениями</string>
<string name="setting_dark">Использовать темную тему</string>
<string name="setting_indicators">Показать индикаторы состояния</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Экспорт настроек</string>
<string name="setting_import">Импорт настроек</string>
<string name="setting_vpn">Открыть параметры VPN</string>
<string name="summary_system">Определить правила для системных приложений (для профи)</string>
<string name="summary_indicators">Отображать измененные сети на панели</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Вы уверены?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard отключен, используйте переключатель выше для включения</string>
<string name="msg_revoked">NetGuard был отключен</string>
<string name="msg_completed">Действие завершено</string>

View File

@ -19,14 +19,17 @@ Je to spôsobené chybami v Androide alebo v softvéri poskytovanom výrobcom, p
<string name="setting_system">Spravovať systémové aplikácie</string>
<string name="setting_dark">Použiť tmavú tému</string>
<string name="setting_indicators">Show state indicators</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Exportovať nastavenia</string>
<string name="setting_import">Importovať nastavenia</string>
<string name="setting_vpn">Otvoriť nastavenia VPN</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Ste si istý?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard je vypnutý, použite prepínač vyššie na zapnutie NetGuard</string>
<string name="msg_revoked">NetGuard je vypnutý</string>
<string name="msg_completed">Akcia bola dokončená</string>

View File

@ -19,14 +19,17 @@
<string name="setting_system">管理系统应用</string>
<string name="setting_dark">使用暗色主题</string>
<string name="setting_indicators">显示状态指示器</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">导出设置</string>
<string name="setting_import">导入设置</string>
<string name="setting_vpn">打开安卓VPN设置</string>
<string name="summary_system">定义系统应用规则, 仅供专业用户</string>
<string name="summary_indicators">在状态栏显示网络类型及网络是否按流量计费</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">是否确认?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard已被停用, 请使用上方的开关启用NetGuard</string>
<string name="msg_revoked">NetGuard已被停用</string>
<string name="msg_completed">操作完成</string>

View File

@ -20,14 +20,17 @@ These issues are caused by bugs in Android, or in the software provided by the m
<string name="setting_system">Manage system applications</string>
<string name="setting_dark">Use dark theme</string>
<string name="setting_indicators">Show state indicators</string>
<string name="setting_foreground">Start as foreground service</string>
<string name="setting_export">Export settings</string>
<string name="setting_import">Import settings</string>
<string name="setting_vpn">Open Android VPN settings</string>
<string name="summary_system">Define rules for system applications (for experts)</string>
<string name="summary_indicators">Display the network type and if the network is metered in the action bar</string>
<string name="summary_foreground">Foreground services show on ongoing notification in the status bar and have less chance of being killed by Android</string>
<string name="msg_sure">Are you sure?</string>
<string name="msg_started">Enforcing rules</string>
<string name="msg_disabled">NetGuard is disabled, use the switch above to enable NetGuard</string>
<string name="msg_revoked">NetGuard has been disabled</string>
<string name="msg_completed">Action completed</string>

View File

@ -26,6 +26,11 @@
android:key="indicators"
android:summary="@string/summary_indicators"
android:title="@string/setting_indicators" />
<CheckBoxPreference
android:defaultValue="false"
android:key="foreground"
android:summary="@string/summary_foreground"
android:title="@string/setting_foreground" />
<Preference
android:key="export"
android:title="@string/setting_export" />