From 3d4b1f3f4de0bb75219a4e85e9a74ec99a748074 Mon Sep 17 00:00:00 2001 From: "codegen-sh[bot]" <131295404+codegen-sh[bot]@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:40:44 +0000 Subject: [PATCH] Fix cancel button functionality for Android 14+ - Changed RECEIVER_EXPORTED back to RECEIVER_NOT_EXPORTED for internal app communication - Added setPackage() to PendingIntent to make it explicit and ensure proper delivery - Simplified broadcast receiver validation logic This fixes the issue where the cancel button in notifications was not working on newer Android versions due to stricter broadcast receiver requirements. --- .../de/canyumusak/androiddrop/TransferService.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Android/app/src/main/java/de/canyumusak/androiddrop/TransferService.kt b/Android/app/src/main/java/de/canyumusak/androiddrop/TransferService.kt index e0cee08..682d032 100644 --- a/Android/app/src/main/java/de/canyumusak/androiddrop/TransferService.kt +++ b/Android/app/src/main/java/de/canyumusak/androiddrop/TransferService.kt @@ -29,7 +29,7 @@ class TransferService : Service() { registerReceiver( transferServiceBroadcastReceiver, IntentFilter(CANCEL_REQUEST_ACTION), - RECEIVER_EXPORTED, + RECEIVER_NOT_EXPORTED, ) } else { registerReceiver( @@ -137,7 +137,9 @@ class TransferService : Service() { val intent = PendingIntent.getBroadcast( context, 0, - Intent(CANCEL_REQUEST_ACTION), + Intent(CANCEL_REQUEST_ACTION).apply { + setPackage(context.packageName) + }, PendingIntent.FLAG_IMMUTABLE ) val action = NotificationCompat.Action(0, "Cancel", intent) @@ -161,7 +163,9 @@ class TransferService : Service() { val intent = PendingIntent.getBroadcast( context, 0, - Intent(CANCEL_REQUEST_ACTION), + Intent(CANCEL_REQUEST_ACTION).apply { + setPackage(context.packageName) + }, PendingIntent.FLAG_IMMUTABLE ) val action = NotificationCompat.Action(0, "Cancel", intent) @@ -228,11 +232,11 @@ class TransferService : Service() { class TransferServiceBroadcastReceiver(val service: TransferService) : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { + // Validate that this is a legitimate cancel request if (intent?.action == TransferService.CANCEL_REQUEST_ACTION) { service.cancelCurrentTransfer() } } - } data class FileTransferCommand(