From b48dbb18f26961aad87558dd29c81ac489db5e0f Mon Sep 17 00:00:00 2001 From: Charles Lombardo Date: Tue, 29 Aug 2023 21:22:33 -0400 Subject: [PATCH] android: Support dynamic app shortcuts --- .../org/yuzu/yuzu_emu/adapters/GameAdapter.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt index 13359ef369..0013e8512d 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt @@ -3,6 +3,8 @@ package org.yuzu.yuzu_emu.adapters +import android.content.Intent +import android.graphics.drawable.BitmapDrawable import android.net.Uri import android.text.TextUtils import android.view.LayoutInflater @@ -11,6 +13,9 @@ import android.view.ViewGroup import android.widget.ImageView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.pm.ShortcutInfoCompat +import androidx.core.content.pm.ShortcutManagerCompat +import androidx.core.graphics.drawable.IconCompat import androidx.documentfile.provider.DocumentFile import androidx.lifecycle.ViewModelProvider import androidx.navigation.findNavController @@ -22,6 +27,7 @@ import androidx.recyclerview.widget.RecyclerView import org.yuzu.yuzu_emu.HomeNavigationDirections import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.YuzuApplication +import org.yuzu.yuzu_emu.activities.EmulationActivity import org.yuzu.yuzu_emu.adapters.GameAdapter.GameViewHolder import org.yuzu.yuzu_emu.databinding.CardGameBinding import org.yuzu.yuzu_emu.model.Game @@ -77,6 +83,21 @@ class GameAdapter(private val activity: AppCompatActivity) : ) .apply() + val openIntent = Intent(YuzuApplication.appContext, EmulationActivity::class.java).apply { + action = Intent.ACTION_VIEW + data = Uri.parse(holder.game.path) + } + val shortcut = ShortcutInfoCompat.Builder(YuzuApplication.appContext, holder.game.path) + .setShortLabel(holder.game.title) + .setIcon( + IconCompat.createWithBitmap( + (holder.binding.imageGameScreen.drawable as BitmapDrawable).bitmap + ) + ) + .setIntent(openIntent) + .build() + ShortcutManagerCompat.pushDynamicShortcut(YuzuApplication.appContext, shortcut) + val action = HomeNavigationDirections.actionGlobalEmulationActivity(holder.game) view.findNavController().navigate(action) }