diff options
author | Arne Schwabe <arne@rfc2549.org> | 2017-06-13 21:01:34 +0200 |
---|---|---|
committer | Arne Schwabe <arne@rfc2549.org> | 2017-06-13 21:01:34 +0200 |
commit | 52955295a3af53e53a07a54d9772bcd9e3a1590a (patch) | |
tree | 16c5229e54021a0e60e16b6a7602ec92a67e7f5f /main/src | |
parent | 1b6f7d1114f1d28bb8d3a878769de8d43c4ee9c8 (diff) |
Add proper notification channel support
Diffstat (limited to 'main/src')
3 files changed, 56 insertions, 5 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java index 4220b2be..919c7d3e 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java +++ b/main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java @@ -4,7 +4,14 @@ */ package de.blinkt.openvpn.core; + +import android.annotation.TargetApi; import android.app.Application; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.content.Context; +import android.graphics.Color; +import android.os.Build; /* import org.acra.ACRA; @@ -12,9 +19,7 @@ import org.acra.ReportingInteractionMode; import org.acra.annotation.ReportsCrashes; */ -import de.blinkt.openvpn.BuildConfig; import de.blinkt.openvpn.R; -import de.blinkt.openvpn.core.PRNGFixes; public class ICSOpenVPNApplication extends Application { private StatusListener mStatus; @@ -24,7 +29,40 @@ public class ICSOpenVPNApplication extends Application { super.onCreate(); PRNGFixes.apply(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) + + createNotificationChannels(); mStatus = new StatusListener(); mStatus.init(getApplicationContext()); + + } + + @TargetApi(Build.VERSION_CODES.O) + private void createNotificationChannels() { + NotificationManager mNotificationManager = + (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); + + // Background message + CharSequence name = getString(R.string.channel_name_background); + NotificationChannel mChannel = new NotificationChannel(OpenVPNService.NOTIFICATION_CHANNEL_BG_ID, + name, NotificationManager.IMPORTANCE_MIN); + + mChannel.setDescription(getString(R.string.channel_description_background)); + mChannel.enableLights(false); + + mChannel.setLightColor(Color.DKGRAY); + mNotificationManager.createNotificationChannel(mChannel); + + // Connection status change messages + + name = getString(R.string.channel_name_status); + mChannel = new NotificationChannel(OpenVPNService.NOTIFICATION_CHANNEL_NEWSTATUS_ID, + name, NotificationManager.IMPORTANCE_DEFAULT); + + mChannel.setDescription(getString(R.string.channel_description_status)); + mChannel.enableLights(true); + + mChannel.setLightColor(Color.BLUE); + mNotificationManager.createNotificationChannel(mChannel); } } diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java index 9042ddba..5b90bcc8 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java @@ -68,7 +68,9 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac private static final String PAUSE_VPN = "de.blinkt.openvpn.PAUSE_VPN"; private static final String RESUME_VPN = "de.blinkt.openvpn.RESUME_VPN"; private static final int OPENVPN_STATUS = 1; - private static final String NOTIFICATION_CHANNEL_ID="openvpn"; + public static final String NOTIFICATION_CHANNEL_BG_ID="openvpn_bg"; + public static final String NOTIFICATION_CHANNEL_NEWSTATUS_ID="openvpn_newstat"; + private static boolean mNotificationAlwaysVisible = false; private final Vector<String> mDnslist = new Vector<>(); private final NetworkSpace mRoutes = new NetworkSpace(); @@ -229,8 +231,15 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) lpNotificationExtras(nbuilder); - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) - nbuilder.setChannelId(NOTIFICATION_CHANNEL_ID); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + if (priority ==0 ) + nbuilder.setChannelId(NOTIFICATION_CHANNEL_BG_ID); + else + nbuilder.setChannelId(NOTIFICATION_CHANNEL_NEWSTATUS_ID); + if (mProfile != null) + nbuilder.setShortcutId(mProfile.getUUIDString()); + + } if (tickerText != null && !tickerText.equals("")) nbuilder.setTicker(tickerText); diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index c20d1fe4..cbd9c06b 100755 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -441,5 +441,9 @@ <string name="volume_kbyte">%.1f kB</string> <string name="volume_mbyte">%.1f MB</string> <string name="volume_gbyte">%.1f GB</string> + <string name="channel_name_background">Connection statistics</string> + <string name="channel_description_background">Ongoing statistics of the established OpenVPN connection</string> + <string name="channel_name_status">Connection status change</string> + <string name="channel_description_status">Status changes of the OpenVPN connection (Connecting, authenticating,…)</string> </resources> |