@@ -70,11 +70,15 @@ import androidx.compose.ui.Alignment
7070import androidx.compose.ui.Modifier
7171import androidx.compose.ui.draw.clip
7272import androidx.compose.ui.draw.rotate
73+ import androidx.compose.ui.graphics.vector.ImageVector
7374import androidx.compose.ui.platform.LocalContext
7475import androidx.compose.ui.text.font.FontWeight
7576import androidx.compose.ui.unit.dp
7677import androidx.compose.ui.unit.sp
7778import androidx.core.content.ContextCompat
79+ import androidx.core.content.pm.ShortcutInfoCompat
80+ import androidx.core.content.pm.ShortcutManagerCompat
81+ import androidx.core.graphics.drawable.IconCompat
7882import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
7983import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
8084import androidx.lifecycle.lifecycleScope
@@ -160,6 +164,7 @@ class MainActivity : ComponentActivity() {
160164
161165 if (onboardingManager.isOnboardingCompleted()) {
162166 fuelCheckScheduler.scheduleNextFuelCheck()
167+ publishShortcuts(this )
163168 }
164169
165170 setContent {
@@ -817,6 +822,41 @@ class MainActivity : ComponentActivity() {
817822 super .onNewIntent(intent)
818823 intentState.value = intent
819824 }
825+
826+ private fun publishShortcuts (context : Context ) {
827+ val voiceShortcut = ShortcutInfoCompat .Builder (context, " instant_record" )
828+ .setShortLabel(" Instant Record" )
829+ .setLongLabel(" Start recording a voice memo immediately" )
830+ .setIcon(IconCompat .createWithResource(context, R .drawable.ic_outline_mic_24))
831+ .setIntent(
832+ Intent (context, ActionTrampolineActivity ::class .java).apply {
833+ action = " com.ilseon.action.NEW_VOICE_MEMO"
834+ }
835+ )
836+ .build()
837+
838+ val taskShortcut = ShortcutInfoCompat .Builder (context, " new_task" )
839+ .setShortLabel(" New Task" )
840+ .setIcon(IconCompat .createWithResource(context, R .drawable.ic_outline_add_task_24))
841+ .setIntent(
842+ Intent (context, ActionTrampolineActivity ::class .java).apply {
843+ action = " com.ilseon.action.NEW_TASK"
844+ }
845+ )
846+ .build()
847+
848+ val ideaShortcut = ShortcutInfoCompat .Builder (context, " new_idea" )
849+ .setShortLabel(" New Idea" )
850+ .setIcon(IconCompat .createWithResource(context, R .drawable.ic_outline_lightbulb_24))
851+ .setIntent(
852+ Intent (context, ActionTrampolineActivity ::class .java).apply {
853+ action = " com.ilseon.action.NEW_IDEA"
854+ }
855+ )
856+ .build()
857+
858+ ShortcutManagerCompat .addDynamicShortcuts(context, listOf (voiceShortcut, taskShortcut, ideaShortcut))
859+ }
820860}
821861
822862@Composable
0 commit comments