diff --git a/app/src/main/java/com/termux/app/utils/CrashUtils.java b/app/src/main/java/com/termux/app/utils/CrashUtils.java index 3a59d9c1..1437e234 100644 --- a/app/src/main/java/com/termux/app/utils/CrashUtils.java +++ b/app/src/main/java/com/termux/app/utils/CrashUtils.java @@ -15,6 +15,7 @@ import com.termux.shared.notification.NotificationUtils; import com.termux.shared.file.FileUtils; import com.termux.shared.models.ReportInfo; import com.termux.app.models.UserAction; +import com.termux.shared.notification.TermuxNotificationUtils; import com.termux.shared.settings.preferences.TermuxAppSharedPreferences; import com.termux.shared.settings.preferences.TermuxPreferenceConstants; import com.termux.shared.data.DataUtils; @@ -131,7 +132,7 @@ public class CrashUtils { if (builder == null) return; // Send the notification - int nextNotificationId = NotificationUtils.getNextNotificationId(context); + int nextNotificationId = TermuxNotificationUtils.getNextNotificationId(context); NotificationManager notificationManager = NotificationUtils.getNotificationManager(context); if (notificationManager != null) notificationManager.notify(nextNotificationId, builder.build()); diff --git a/app/src/main/java/com/termux/app/utils/PluginUtils.java b/app/src/main/java/com/termux/app/utils/PluginUtils.java index 67fe6c18..3b445339 100644 --- a/app/src/main/java/com/termux/app/utils/PluginUtils.java +++ b/app/src/main/java/com/termux/app/utils/PluginUtils.java @@ -16,6 +16,7 @@ import com.termux.shared.models.ResultData; import com.termux.shared.models.errors.Errno; import com.termux.shared.models.errors.Error; import com.termux.shared.notification.NotificationUtils; +import com.termux.shared.notification.TermuxNotificationUtils; import com.termux.shared.shell.ResultSender; import com.termux.shared.shell.ShellUtils; import com.termux.shared.termux.AndroidUtils; @@ -233,7 +234,7 @@ public class PluginUtils { if (builder == null) return; // Send the notification - int nextNotificationId = NotificationUtils.getNextNotificationId(context); + int nextNotificationId = TermuxNotificationUtils.getNextNotificationId(context); NotificationManager notificationManager = NotificationUtils.getNotificationManager(context); if (notificationManager != null) notificationManager.notify(nextNotificationId, builder.build()); diff --git a/termux-shared/src/main/java/com/termux/shared/notification/NotificationUtils.java b/termux-shared/src/main/java/com/termux/shared/notification/NotificationUtils.java index f6f21c89..c4250ced 100644 --- a/termux-shared/src/main/java/com/termux/shared/notification/NotificationUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/notification/NotificationUtils.java @@ -10,9 +10,6 @@ import android.os.Build; import androidx.annotation.Nullable; import com.termux.shared.logger.Logger; -import com.termux.shared.settings.preferences.TermuxAppSharedPreferences; -import com.termux.shared.settings.preferences.TermuxPreferenceConstants; -import com.termux.shared.termux.TermuxConstants; public class NotificationUtils { @@ -49,35 +46,6 @@ public class NotificationUtils { return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); } - /** - * Try to get the next unique notification id that isn't already being used by the app. - * - * Termux app and its plugin must use unique notification ids from the same pool due to usage of android:sharedUserId. - * https://commonsware.com/blog/2017/06/07/jobscheduler-job-ids-libraries.html - * - * @param context The {@link Context} for operations. - * @return Returns the notification id that should be safe to use. - */ - public synchronized static int getNextNotificationId(final Context context) { - if (context == null) return TermuxPreferenceConstants.TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID; - - TermuxAppSharedPreferences preferences = TermuxAppSharedPreferences.build(context); - if (preferences == null) return TermuxPreferenceConstants.TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID; - - int lastNotificationId = preferences.getLastNotificationId(); - - int nextNotificationId = lastNotificationId + 1; - while(nextNotificationId == TermuxConstants.TERMUX_APP_NOTIFICATION_ID || nextNotificationId == TermuxConstants.TERMUX_RUN_COMMAND_NOTIFICATION_ID) { - nextNotificationId++; - } - - if (nextNotificationId == Integer.MAX_VALUE || nextNotificationId < 0) - nextNotificationId = TermuxPreferenceConstants.TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID; - - preferences.setLastNotificationId(nextNotificationId); - return nextNotificationId; - } - /** * Get {@link Notification.Builder}. * diff --git a/termux-shared/src/main/java/com/termux/shared/notification/TermuxNotificationUtils.java b/termux-shared/src/main/java/com/termux/shared/notification/TermuxNotificationUtils.java new file mode 100644 index 00000000..585cd605 --- /dev/null +++ b/termux-shared/src/main/java/com/termux/shared/notification/TermuxNotificationUtils.java @@ -0,0 +1,38 @@ +package com.termux.shared.notification; + +import android.content.Context; + +import com.termux.shared.settings.preferences.TermuxAppSharedPreferences; +import com.termux.shared.settings.preferences.TermuxPreferenceConstants; +import com.termux.shared.termux.TermuxConstants; + +public class TermuxNotificationUtils { + /** + * Try to get the next unique notification id that isn't already being used by the app. + * + * Termux app and its plugin must use unique notification ids from the same pool due to usage of android:sharedUserId. + * https://commonsware.com/blog/2017/06/07/jobscheduler-job-ids-libraries.html + * + * @param context The {@link Context} for operations. + * @return Returns the notification id that should be safe to use. + */ + public synchronized static int getNextNotificationId(final Context context) { + if (context == null) return TermuxPreferenceConstants.TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID; + + TermuxAppSharedPreferences preferences = TermuxAppSharedPreferences.build(context); + if (preferences == null) return TermuxPreferenceConstants.TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID; + + int lastNotificationId = preferences.getLastNotificationId(); + + int nextNotificationId = lastNotificationId + 1; + while(nextNotificationId == TermuxConstants.TERMUX_APP_NOTIFICATION_ID || nextNotificationId == TermuxConstants.TERMUX_RUN_COMMAND_NOTIFICATION_ID) { + nextNotificationId++; + } + + if (nextNotificationId == Integer.MAX_VALUE || nextNotificationId < 0) + nextNotificationId = TermuxPreferenceConstants.TERMUX_APP.DEFAULT_VALUE_KEY_LAST_NOTIFICATION_ID; + + preferences.setLastNotificationId(nextNotificationId); + return nextNotificationId; + } +}