From 6c798c6cd5ef03af477318d78276ef9cd1896958 Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Tue, 3 Oct 2023 17:00:33 +0200 Subject: [PATCH] Make it possible to target sdk 34 --- app/src/main/AndroidManifest.xml | 3 +++ app/src/main/java/com/termux/app/TermuxActivity.java | 12 ++++++++++-- app/src/main/java/com/termux/app/TermuxService.java | 6 +++--- .../termux/shared/termux/crash/TermuxCrashUtils.java | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4e95702bc3..d7fa343c84 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,6 +36,7 @@ + diff --git a/app/src/main/java/com/termux/app/TermuxActivity.java b/app/src/main/java/com/termux/app/TermuxActivity.java index 308d1f0b2b..88d10d5064 100644 --- a/app/src/main/java/com/termux/app/TermuxActivity.java +++ b/app/src/main/java/com/termux/app/TermuxActivity.java @@ -259,7 +259,11 @@ public void onCreate(Bundle savedInstanceState) { try { // Start the {@link TermuxService} and make it run regardless of who is bound to it Intent serviceIntent = new Intent(this, TermuxService.class); - startService(serviceIntent); + if (Build.VERSION.SDK_INT >= 26) { + startForegroundService(serviceIntent); + } else { + startService(serviceIntent); + }; // Attempt to bind to the service, this will call the {@link #onServiceConnected(ComponentName, IBinder)} // callback if it succeeds. @@ -932,7 +936,11 @@ private void registerTermuxActivityBroadcastReceiver() { intentFilter.addAction(TERMUX_ACTIVITY.ACTION_RELOAD_STYLE); intentFilter.addAction(TERMUX_ACTIVITY.ACTION_REQUEST_PERMISSIONS); - registerReceiver(mTermuxActivityBroadcastReceiver, intentFilter); + if (Build.VERSION.SDK_INT >= 28 ) { + registerReceiver(mTermuxActivityBroadcastReceiver, intentFilter, Context.RECEIVER_NOT_EXPORTED); + } else { + registerReceiver(mTermuxActivityBroadcastReceiver, intentFilter); + } } private void unregisterTermuxActivityBroadcastReceiver() { diff --git a/app/src/main/java/com/termux/app/TermuxService.java b/app/src/main/java/com/termux/app/TermuxService.java index 8025d0bd2c..bc3fe23921 100644 --- a/app/src/main/java/com/termux/app/TermuxService.java +++ b/app/src/main/java/com/termux/app/TermuxService.java @@ -784,7 +784,7 @@ private Notification buildNotification() { // Set pending intent to be launched when notification is clicked Intent notificationIntent = TermuxActivity.newInstance(this); - PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); + PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_IMMUTABLE); // Set notification text @@ -827,7 +827,7 @@ private Notification buildNotification() { // Set Exit button action Intent exitIntent = new Intent(this, TermuxService.class).setAction(TERMUX_SERVICE.ACTION_STOP_SERVICE); - builder.addAction(android.R.drawable.ic_delete, res.getString(R.string.notification_action_exit), PendingIntent.getService(this, 0, exitIntent, 0)); + builder.addAction(android.R.drawable.ic_delete, res.getString(R.string.notification_action_exit), PendingIntent.getService(this, 0, exitIntent, PendingIntent.FLAG_IMMUTABLE)); // Set Wakelock button actions @@ -835,7 +835,7 @@ private Notification buildNotification() { Intent toggleWakeLockIntent = new Intent(this, TermuxService.class).setAction(newWakeAction); String actionTitle = res.getString(wakeLockHeld ? R.string.notification_action_wake_unlock : R.string.notification_action_wake_lock); int actionIcon = wakeLockHeld ? android.R.drawable.ic_lock_idle_lock : android.R.drawable.ic_lock_lock; - builder.addAction(actionIcon, actionTitle, PendingIntent.getService(this, 0, toggleWakeLockIntent, 0)); + builder.addAction(actionIcon, actionTitle, PendingIntent.getService(this, 0, toggleWakeLockIntent, PendingIntent.FLAG_IMMUTABLE)); return builder.build(); diff --git a/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java b/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java index 1cd4ce0668..e90b61c4d1 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java @@ -342,7 +342,7 @@ public static void sendCrashReportNotification(final Context currentPackageConte // Must ensure result code for PendingIntents and id for notification are unique otherwise will override previous int nextNotificationId = TermuxNotificationUtils.getNextNotificationId(termuxPackageContext); - PendingIntent contentIntent = PendingIntent.getActivity(termuxPackageContext, nextNotificationId, result.contentIntent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent contentIntent = PendingIntent.getActivity(termuxPackageContext, nextNotificationId, result.contentIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); PendingIntent deleteIntent = null; if (result.deleteIntent != null)