diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java index 1a1c0b3516..4bab03ff71 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlaybackService.java @@ -7,7 +7,9 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.media.AudioManager; import android.net.Uri; +import android.os.Build; import android.os.Bundle; +import android.os.Process; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -114,6 +116,10 @@ public class VoiceNotePlaybackService extends MediaSessionService { @Nullable @Override public MediaSession onGetSession(@NonNull MediaSession.ControllerInfo controllerInfo) { + if (Build.VERSION.SDK_INT >= 28 && controllerInfo.getUid() != Process.myUid()) { + Log.w(TAG, "Denying session to external caller: " + controllerInfo.getPackageName()); + return null; + } return mediaSession; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerCallback.kt b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerCallback.kt index 77cc51592a..c5522571e1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerCallback.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerCallback.kt @@ -8,7 +8,9 @@ package org.thoughtcrime.securesms.components.voice import android.content.Context import android.media.AudioManager import android.net.Uri +import android.os.Build import android.os.Bundle +import android.os.Process import android.widget.Toast import androidx.annotation.MainThread import androidx.annotation.OptIn @@ -94,6 +96,10 @@ class VoiceNotePlayerCallback(val context: Context, val player: VoiceNotePlayer) private var latestUri = Uri.EMPTY override fun onConnect(session: MediaSession, controller: MediaSession.ControllerInfo): MediaSession.ConnectionResult { + if (Build.VERSION.SDK_INT >= 28 && controller.uid != Process.myUid()) { + Log.w(TAG, "Rejecting connection from external caller: ${controller.packageName}") + return MediaSession.ConnectionResult.reject() + } return MediaSession.ConnectionResult.accept(CUSTOM_COMMANDS, SUPPORTED_ACTIONS) }