Skip to content

Commit 20f3802

Browse files
committed
#1387 fix: launching app shortcuts works again on Android 14+
1 parent ceecc02 commit 20f3802

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

app/src/main/java/io/github/sds100/keymapper/system/apps/AndroidAppShortcutAdapter.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package io.github.sds100.keymapper.system.apps
22

3+
import android.app.ActivityOptions
34
import android.app.PendingIntent
45
import android.content.ComponentName
56
import android.content.Context
67
import android.content.Intent
78
import android.content.pm.PackageManager
89
import android.graphics.drawable.Drawable
10+
import android.os.Build
911
import android.os.Bundle
1012
import androidx.core.content.pm.ShortcutInfoCompat
1113
import androidx.core.content.pm.ShortcutManagerCompat
@@ -79,8 +81,7 @@ class AndroidAppShortcutAdapter(context: Context) : AppShortcutAdapter {
7981
}
8082
}
8183

82-
override fun createShortcutResultIntent(shortcut: ShortcutInfoCompat): Intent =
83-
ShortcutManagerCompat.createShortcutResultIntent(ctx, shortcut)
84+
override fun createShortcutResultIntent(shortcut: ShortcutInfoCompat): Intent = ShortcutManagerCompat.createShortcutResultIntent(ctx, shortcut)
8485

8586
override fun getShortcutName(info: AppShortcutInfo): Result<String> {
8687
try {
@@ -117,7 +118,18 @@ class AndroidAppShortcutAdapter(context: Context) : AppShortcutAdapter {
117118
val flags = PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
118119
val pendingIntent = PendingIntent.getActivity(ctx, 0, intent, flags)
119120

120-
pendingIntent.send()
121+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
122+
val bundle = ActivityOptions.makeBasic()
123+
.setPendingIntentBackgroundActivityStartMode(
124+
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED,
125+
)
126+
.toBundle()
127+
128+
pendingIntent.send(bundle)
129+
} else {
130+
pendingIntent.send()
131+
}
132+
121133
return Success(Unit)
122134
} catch (e: SecurityException) {
123135
return Error.InsufficientPermissionsToOpenAppShortcut

0 commit comments

Comments
 (0)