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>  | 
