diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index afe2188..9e7d0e8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,10 +38,6 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
 
-            <meta-data
-                android:name="android.app.shortcuts"
-                android:resource="@xml/shortcuts" />
-
             <intent-filter>
                 <action android:name="android.media.action.IMAGE_CAPTURE" />
                 <action android:name="android.media.action.IMAGE_CAPTURE_SECURE" />
diff --git a/app/src/main/java/org/lineageos/aperture/MainActivity.kt b/app/src/main/java/org/lineageos/aperture/MainActivity.kt
index d6a369a..f43f9b0 100644
--- a/app/src/main/java/org/lineageos/aperture/MainActivity.kt
+++ b/app/src/main/java/org/lineageos/aperture/MainActivity.kt
@@ -76,6 +76,7 @@
 import org.lineageos.aperture.utils.CameraState
 import org.lineageos.aperture.utils.GridMode
 import org.lineageos.aperture.utils.PhysicalCamera
+import org.lineageos.aperture.utils.ShortcutsUtils
 import org.lineageos.aperture.utils.StorageUtils
 import org.lineageos.aperture.utils.TimeUtils
 import java.util.concurrent.ExecutorService
@@ -224,15 +225,15 @@
     }
 
     private val shortcutActions = mapOf(
-        "shortcut_selfie" to {
+        ShortcutsUtils.SHORTCUT_ID_SELFIE to {
             sharedPreferences.lastCameraMode = CameraMode.PHOTO
             sharedPreferences.lastCameraFacing = CameraFacing.FRONT
         },
-        "shortcut_video" to {
+        ShortcutsUtils.SHORTCUT_ID_VIDEO to {
             sharedPreferences.lastCameraMode = CameraMode.VIDEO
             sharedPreferences.lastCameraFacing = CameraFacing.BACK
         },
-        "shortcut_qr" to {
+        ShortcutsUtils.SHORTCUT_ID_QR to {
             sharedPreferences.lastCameraMode = CameraMode.QR
         },
     )
@@ -246,6 +247,9 @@
         setContentView(R.layout.activity_main)
         setShowWhenLocked(true)
 
+        // Register shortcuts
+        ShortcutsUtils.registerShortcuts(this)
+
         // Request camera permissions
         if (!allPermissionsGranted()) {
             ActivityCompat.requestPermissions(
diff --git a/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt b/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt
new file mode 100644
index 0000000..c5c6dfb
--- /dev/null
+++ b/app/src/main/java/org/lineageos/aperture/utils/ShortcutsUtils.kt
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2022 The LineageOS Project
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package org.lineageos.aperture.utils
+
+import android.content.Context
+import android.content.Intent
+import android.content.pm.ShortcutInfo
+import android.content.pm.ShortcutManager
+import android.graphics.drawable.Icon
+import org.lineageos.aperture.MainActivity
+import org.lineageos.aperture.R
+
+object ShortcutsUtils {
+    const val SHORTCUT_ID_SELFIE = "shortcut_selfie"
+    const val SHORTCUT_ID_VIDEO = "shortcut_video"
+    const val SHORTCUT_ID_QR = "shortcut_qr"
+
+    @androidx.camera.camera2.interop.ExperimentalCamera2Interop
+    @androidx.camera.core.ExperimentalZeroShutterLag
+    @androidx.camera.view.video.ExperimentalVideo
+    fun registerShortcuts(context: Context) {
+        val shortcutManager = context.getSystemService(ShortcutManager::class.java)
+        shortcutManager.dynamicShortcuts = listOf(
+            ShortcutInfo.Builder(context, SHORTCUT_ID_SELFIE)
+                .setShortLabel(context.getString(R.string.shortcut_selfie))
+                .setLongLabel(context.getString(R.string.shortcut_selfie))
+                .setIcon(Icon.createWithResource(context, R.drawable.ic_shortcut_selfie))
+                .setIntent(
+                    Intent(context, MainActivity::class.java)
+                        .setAction(SHORTCUT_ID_SELFIE)
+                        .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+                )
+                .build(),
+            ShortcutInfo.Builder(context, SHORTCUT_ID_VIDEO)
+                .setShortLabel(context.getString(R.string.shortcut_video))
+                .setLongLabel(context.getString(R.string.shortcut_video))
+                .setIcon(Icon.createWithResource(context, R.drawable.ic_shortcut_video))
+                .setIntent(
+                    Intent(context, MainActivity::class.java)
+                        .setAction(SHORTCUT_ID_VIDEO)
+                        .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+                )
+                .build(),
+            ShortcutInfo.Builder(context, SHORTCUT_ID_QR)
+                .setShortLabel(context.getString(R.string.shortcut_qr))
+                .setLongLabel(context.getString(R.string.shortcut_qr))
+                .setIcon(Icon.createWithResource(context, R.drawable.ic_shortcut_qr))
+                .setIntent(
+                    Intent(context, MainActivity::class.java)
+                        .setAction(SHORTCUT_ID_QR)
+                        .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
+                )
+                .build()
+        )
+    }
+}
diff --git a/app/src/main/res/xml/shortcuts.xml b/app/src/main/res/xml/shortcuts.xml
deleted file mode 100644
index 9e02b7b..0000000
--- a/app/src/main/res/xml/shortcuts.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     SPDX-FileCopyrightText: 2022 The LineageOS Project
-     SPDX-License-Identifier: Apache-2.0
--->
-<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
-    <shortcut
-        android:enabled="true"
-        android:icon="@drawable/ic_shortcut_selfie"
-        android:shortcutDisabledMessage="@string/shortcut_selfie"
-        android:shortcutId="selfie"
-        android:shortcutLongLabel="@string/shortcut_selfie"
-        android:shortcutShortLabel="@string/shortcut_selfie">
-        <intent
-            android:action="shortcut_selfie"
-            android:targetClass="org.lineageos.aperture.MainActivity"
-            android:targetPackage="org.lineageos.aperture" />
-    </shortcut>
-    <shortcut
-        android:enabled="true"
-        android:icon="@drawable/ic_shortcut_video"
-        android:shortcutDisabledMessage="@string/shortcut_video"
-        android:shortcutId="video"
-        android:shortcutLongLabel="@string/shortcut_video"
-        android:shortcutShortLabel="@string/shortcut_video">
-        <intent
-            android:action="shortcut_video"
-            android:targetClass="org.lineageos.aperture.MainActivity"
-            android:targetPackage="org.lineageos.aperture" />
-    </shortcut>
-    <shortcut
-        android:enabled="true"
-        android:icon="@drawable/ic_shortcut_qr"
-        android:shortcutDisabledMessage="@string/shortcut_qr"
-        android:shortcutId="qr"
-        android:shortcutLongLabel="@string/shortcut_qr"
-        android:shortcutShortLabel="@string/shortcut_qr">
-        <intent
-            android:action="shortcut_qr"
-            android:targetClass="org.lineageos.aperture.MainActivity"
-            android:targetPackage="org.lineageos.aperture" />
-    </shortcut>
-</shortcuts>
