diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/GenerateNotification.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/GenerateNotification.java index bc11f1e4ea..56174d88b6 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/GenerateNotification.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/GenerateNotification.java @@ -133,11 +133,29 @@ private static CharSequence getTitle(JSONObject fcmJson) { * on weird UI interaction */ private static PendingIntent getNewActionPendingIntent(int requestCode, Intent intent) { - return PendingIntent.getActivity(currentContext, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); + final int flags; + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + flags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE; + + } else { + flags = PendingIntent.FLAG_UPDATE_CURRENT; + } + + return PendingIntent.getActivity(currentContext, requestCode, intent, flags); } private static PendingIntent getNewDismissActionPendingIntent(int requestCode, Intent intent) { - return PendingIntent.getBroadcast(currentContext, requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); + final int flags; + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + flags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE; + + } else { + flags = PendingIntent.FLAG_UPDATE_CURRENT; + } + + return PendingIntent.getBroadcast(currentContext, requestCode, intent, flags); } private static Intent getNewBaseIntent(int notificationId) { diff --git a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSBackgroundSync.java b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSBackgroundSync.java index 28534bc431..2f7709949a 100644 --- a/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSBackgroundSync.java +++ b/OneSignalSDK/onesignal/src/main/java/com/onesignal/OSBackgroundSync.java @@ -174,11 +174,21 @@ private PendingIntent syncServicePendingIntent(Context context) { // KEEP - PendingIntent.FLAG_UPDATE_CURRENT // Some Samsung devices will throw the below exception otherwise. // "java.lang.SecurityException: !@Too many alarms (500) registered" + + final int flags; + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + flags = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE; + + } else { + flags = PendingIntent.FLAG_UPDATE_CURRENT; + } + return PendingIntent.getService( context, getSyncTaskId(), new Intent(context, getSyncServicePendingIntentClass()), - PendingIntent.FLAG_UPDATE_CURRENT + flags ); }