summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2022-08-08 22:59:50 +0200
committercyBerta <cyberta@riseup.net>2022-08-08 22:59:50 +0200
commit6d705263bf0fd616926d2c64ada98e2ee7740024 (patch)
treefbf62008d9bc382dd4945ac9729f7347c5c57fa1 /app/src
parentfa5beea3c70a5e20304953b8dbf778ca8f338536 (diff)
set IMMUTABLE flags for PendingIntents on Android 12+
Diffstat (limited to 'app/src')
-rw-r--r--app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java6
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java9
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java11
3 files changed, 19 insertions, 7 deletions
diff --git a/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java b/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java
index 336802c6..687fc66a 100644
--- a/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java
+++ b/app/src/fatweb/java/se.leap.bitmaskclient/appUpdate/DownloadNotificationManager.java
@@ -33,6 +33,7 @@ import se.leap.bitmaskclient.R;
import static android.content.Intent.CATEGORY_DEFAULT;
import static se.leap.bitmaskclient.appUpdate.DownloadBroadcastReceiver.ACTION_DOWNLOAD;
+import static se.leap.bitmaskclient.base.utils.ConfigHelper.getPendingIntentFlags;
public class DownloadNotificationManager {
private Context context;
@@ -130,12 +131,13 @@ public class DownloadNotificationManager {
private PendingIntent getDownloadIntent() {
Intent downloadIntent = new Intent(context, DownloadBroadcastReceiver.class);
downloadIntent.setAction(ACTION_DOWNLOAD);
- return PendingIntent.getBroadcast(context, 0, downloadIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+
+ return PendingIntent.getBroadcast(context, 0, downloadIntent, getPendingIntentFlags());
}
private PendingIntent getInstallIntent() {
Intent installIntent = new Intent(context, InstallActivity.class);
- return PendingIntent.getActivity(context, 0, installIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getActivity(context, 0, installIntent, getPendingIntentFlags());
}
public void cancelNotifications() {
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
index 91894fb8..96518a8e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/ConfigHelper.java
@@ -18,6 +18,7 @@ package se.leap.bitmaskclient.base.utils;
import static se.leap.bitmaskclient.base.models.Constants.DEFAULT_BITMASK;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
@@ -307,4 +308,12 @@ public class ConfigHelper {
return BuildConfig.obfsvpn_use_kcp;
}
}
+
+ public static int getPendingIntentFlags() {
+ int flags = PendingIntent.FLAG_CANCEL_CURRENT;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
+ flags |= PendingIntent.FLAG_IMMUTABLE;
+ }
+ return flags;
+ }
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java b/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java
index a869210e..31893fb1 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/VpnNotificationManager.java
@@ -55,6 +55,7 @@ import static se.leap.bitmaskclient.base.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
import static se.leap.bitmaskclient.base.models.Constants.ASK_TO_CANCEL_VPN;
import static se.leap.bitmaskclient.base.models.Constants.EIP_ACTION_START;
import static se.leap.bitmaskclient.base.models.Constants.EIP_ACTION_STOP_BLOCKING_VPN;
+import static se.leap.bitmaskclient.base.utils.ConfigHelper.getPendingIntentFlags;
/**
* Created by cyberta on 14.01.18.
@@ -305,19 +306,19 @@ public class VpnNotificationManager {
private PendingIntent getMainActivityIntent() {
Intent startActivity = new Intent(context, StartActivity.class);
- return PendingIntent.getActivity(context, 0, startActivity, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getActivity(context, 0, startActivity, getPendingIntentFlags());
}
private PendingIntent getStartOpenvpnIntent() {
Intent startIntent = new Intent(context, EIP.class);
startIntent.setAction(EIP_ACTION_START);
- return PendingIntent.getService(context, 0, startIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getService(context, 0, startIntent, getPendingIntentFlags());
}
private PendingIntent getStopVoidVpnIntent() {
Intent stopVoidVpnIntent = new Intent (context, VoidVpnService.class);
stopVoidVpnIntent.setAction(EIP_ACTION_STOP_BLOCKING_VPN);
- return PendingIntent.getService(context, 0, stopVoidVpnIntent, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getService(context, 0, stopVoidVpnIntent, getPendingIntentFlags());
}
private PendingIntent getDisconnectIntent() {
@@ -325,7 +326,7 @@ public class VpnNotificationManager {
disconnectVPN.setAction(ACTION_SHOW_VPN_FRAGMENT);
disconnectVPN.putExtra(ASK_TO_CANCEL_VPN, true);
disconnectVPN.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
- return PendingIntent.getActivity(context, 0, disconnectVPN, PendingIntent.FLAG_CANCEL_CURRENT);
+ return PendingIntent.getActivity(context, 0, disconnectVPN, getPendingIntentFlags());
}
private PendingIntent getUserInputIntent(String needed) {
@@ -334,7 +335,7 @@ public class VpnNotificationManager {
intent.putExtra("need", needed);
Bundle b = new Bundle();
b.putString("need", needed);
- PendingIntent pIntent = PendingIntent.getActivity(context, 12, intent, 0);
+ PendingIntent pIntent = PendingIntent.getActivity(context, 12, intent, getPendingIntentFlags());
return pIntent;
}