From dc7208922c1b630389cb3b6e226a86753c849182 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Tue, 30 Jul 2024 14:08:23 -0400 Subject: [PATCH] Update target SDK to 34. --- app/src/main/AndroidManifest.xml | 20 ++++++++++++++++--- .../securesms/PassphraseRequiredActivity.java | 3 ++- .../conversation/v2/ConversationFragment.kt | 4 ++-- .../registration/SmsRetrieverReceiver.java | 3 ++- .../service/webrtc/ActiveCallManager.kt | 2 +- .../service/webrtc/WebRtcCallService.java | 2 +- .../securesms/util/AlarmSleepTimer.java | 7 +++++-- constants.gradle.kts | 2 +- .../signal/core/util/PendingIntentFlags.kt | 6 +++++- .../lib/src/main/AndroidManifest.xml | 2 ++ 10 files changed, 38 insertions(+), 13 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dbd91920ad..ae8fe4c852 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,6 +85,13 @@ + + + + + + + + android:name=".service.KeyCachingService" + android:foregroundServiceType="remoteMessaging"/> @@ -1162,14 +1172,17 @@ @@ -1365,7 +1379,7 @@ + android:foregroundServiceType="dataSync" /> diff --git a/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java b/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java index afe98f5a0e..fd060db91d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActivity.java @@ -9,6 +9,7 @@ import android.os.Bundle; import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import org.greenrobot.eventbus.EventBus; @@ -295,7 +296,7 @@ public abstract class PassphraseRequiredActivity extends BaseActivity implements }; IntentFilter filter = new IntentFilter(KeyCachingService.CLEAR_KEY_EVENT); - registerReceiver(clearKeyReceiver, filter, KeyCachingService.KEY_PERMISSION, null); + ContextCompat.registerReceiver(this, clearKeyReceiver, filter, KeyCachingService.KEY_PERMISSION, null, ContextCompat.RECEIVER_NOT_EXPORTED); } private void removeClearKeyReceiver(Context context) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 1439e5e183..133a91c746 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -3389,12 +3389,12 @@ class ConversationFragment : } } - requireActivity().registerReceiver(pinnedShortcutReceiver, IntentFilter(ACTION_PINNED_SHORTCUT)) + ContextCompat.registerReceiver(requireActivity(), pinnedShortcutReceiver, IntentFilter(ACTION_PINNED_SHORTCUT), ContextCompat.RECEIVER_EXPORTED) } viewModel.getContactPhotoIcon(requireContext(), Glide.with(this@ConversationFragment)) .subscribe { infoCompat -> - val intent = Intent(ACTION_PINNED_SHORTCUT) + val intent = Intent(ACTION_PINNED_SHORTCUT).apply { `package` = requireContext().packageName } val callback = PendingIntent.getBroadcast(requireContext(), 902, intent, PendingIntentFlags.mutable()) ShortcutManagerCompat.requestPinShortcut(requireContext(), infoCompat, callback.intentSender) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/SmsRetrieverReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/registration/SmsRetrieverReceiver.java index 6ca552d2ba..53d78b742b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/SmsRetrieverReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/SmsRetrieverReceiver.java @@ -8,6 +8,7 @@ import android.content.IntentFilter; import android.os.Bundle; import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import com.google.android.gms.auth.api.phone.SmsRetriever; import com.google.android.gms.common.api.CommonStatusCodes; @@ -34,7 +35,7 @@ public class SmsRetrieverReceiver extends BroadcastReceiver { public void registerReceiver() { Log.d(TAG, "Registering SMS retriever receiver"); - context.registerReceiver(this, new IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION)); + ContextCompat.registerReceiver(context, this, new IntentFilter(SmsRetriever.SMS_RETRIEVED_ACTION), ContextCompat.RECEIVER_EXPORTED); } public void unregisterReceiver() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt index c4f47e18a1..027c9c0fac 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/ActiveCallManager.kt @@ -274,7 +274,7 @@ class ActiveCallManager( @get:RequiresApi(30) override val serviceType: Int - get() = ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA or ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE + get() = ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC private var hangUpRtcOnDeviceCallAnswered: PhoneStateListener? = null private var notification: Notification? = null diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java index 4089f26c12..2cc363907f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/webrtc/WebRtcCallService.java @@ -315,7 +315,7 @@ public final class WebRtcCallService extends Service implements SignalAudioManag } if (Build.VERSION.SDK_INT >= 30) { - startForeground(notificationId, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA | ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE); + startForeground(notificationId, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC); } else { startForeground(notificationId, notification); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/AlarmSleepTimer.java b/app/src/main/java/org/thoughtcrime/securesms/util/AlarmSleepTimer.java index 733a10674e..7fbbe91e6e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/AlarmSleepTimer.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/AlarmSleepTimer.java @@ -10,6 +10,7 @@ import android.os.Build; import android.os.SystemClock; import androidx.core.app.AlarmManagerCompat; +import androidx.core.content.ContextCompat; import org.signal.core.util.PendingIntentFlags; import org.signal.core.util.logging.Log; @@ -42,7 +43,7 @@ public class AlarmSleepTimer implements SleepTimer { try { String actionName = buildActionName(actionId); - context.registerReceiver(alarmReceiver, new IntentFilter(actionName)); + ContextCompat.registerReceiver(context, alarmReceiver, new IntentFilter(actionName), ContextCompat.RECEIVER_NOT_EXPORTED); long startTime = System.currentTimeMillis(); alarmReceiver.setAlarm(sleepDuration, actionName); @@ -72,7 +73,9 @@ public class AlarmSleepTimer implements SleepTimer { private static final String WAKE_UP_THREAD_ACTION = "org.thoughtcrime.securesms.util.AlarmSleepTimer.AlarmReceiver.WAKE_UP_THREAD"; private void setAlarm(long millis, String action) { - final Intent intent = new Intent(action); + final Intent intent = new Intent(action); + intent.setPackage(context.getPackageName()); + final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntentFlags.mutable()); final AlarmManager alarmManager = ServiceUtil.getAlarmManager(context); diff --git a/constants.gradle.kts b/constants.gradle.kts index 3c9af2ae4e..f98824f703 100644 --- a/constants.gradle.kts +++ b/constants.gradle.kts @@ -1,6 +1,6 @@ val signalBuildToolsVersion by extra("34.0.0") val signalCompileSdkVersion by extra("android-34") -val signalTargetSdkVersion by extra(33) +val signalTargetSdkVersion by extra(34) val signalMinSdkVersion by extra(21) val signalJavaVersion by extra(JavaVersion.VERSION_17) val signalKotlinJvmTarget by extra("17") \ No newline at end of file diff --git a/core-util/src/main/java/org/signal/core/util/PendingIntentFlags.kt b/core-util/src/main/java/org/signal/core/util/PendingIntentFlags.kt index 7f119405b6..507e737bee 100644 --- a/core-util/src/main/java/org/signal/core/util/PendingIntentFlags.kt +++ b/core-util/src/main/java/org/signal/core/util/PendingIntentFlags.kt @@ -23,9 +23,13 @@ object PendingIntentFlags { return mutable() or PendingIntent.FLAG_CANCEL_CURRENT } + /** + * Flag indicating that this [PendingIntent] can be used only once. After [PendingIntent.send] is called on it, + * it will be automatically canceled for you and any future attempt to send through it will fail. + */ @JvmStatic fun oneShot(): Int { - return mutable() or PendingIntent.FLAG_ONE_SHOT + return immutable() or PendingIntent.FLAG_ONE_SHOT } /** diff --git a/device-transfer/lib/src/main/AndroidManifest.xml b/device-transfer/lib/src/main/AndroidManifest.xml index 091975b220..ca62ee0ac7 100644 --- a/device-transfer/lib/src/main/AndroidManifest.xml +++ b/device-transfer/lib/src/main/AndroidManifest.xml @@ -9,11 +9,13 @@ +