From 6703a875f0d4b9b9ee7776bc9811b657d32b2fc8 Mon Sep 17 00:00:00 2001 From: Abandoned Cart Date: Thu, 9 Mar 2023 15:29:38 -0500 Subject: [PATCH] Support deprecation of `getSerializableExtra` --- app/src/main/java/emu/skyline/AppDialog.kt | 3 ++- app/src/main/java/emu/skyline/EmulationActivity.kt | 3 ++- .../java/emu/skyline/preference/GpuDriverActivity.kt | 3 ++- .../emu/skyline/settings/GameSettingsFragment.kt | 3 ++- .../java/emu/skyline/utils/SerializationHelper.kt | 12 ++++++++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/emu/skyline/AppDialog.kt b/app/src/main/java/emu/skyline/AppDialog.kt index 02076650..d8adf607 100644 --- a/app/src/main/java/emu/skyline/AppDialog.kt +++ b/app/src/main/java/emu/skyline/AppDialog.kt @@ -25,6 +25,7 @@ import emu.skyline.data.AppItemTag import emu.skyline.databinding.AppDialogBinding import emu.skyline.loader.LoaderResult import emu.skyline.settings.SettingsActivity +import emu.skyline.utils.serializable /** * This dialog is used to show extra game metadata and provide extra options such as pinning the game to the home screen @@ -46,7 +47,7 @@ class AppDialog : BottomSheetDialogFragment() { private lateinit var binding : AppDialogBinding - private val item by lazy { requireArguments().getSerializable(AppItemTag)!! as AppItem } + private val item by lazy { requireArguments().serializable(AppItemTag)!! } /** * This inflates the layout of the dialog after initial view creation diff --git a/app/src/main/java/emu/skyline/EmulationActivity.kt b/app/src/main/java/emu/skyline/EmulationActivity.kt index 4c6366f1..6d37cfb9 100644 --- a/app/src/main/java/emu/skyline/EmulationActivity.kt +++ b/app/src/main/java/emu/skyline/EmulationActivity.kt @@ -37,6 +37,7 @@ import emu.skyline.settings.EmulationSettings import emu.skyline.settings.NativeSettings import emu.skyline.utils.ByteBufferSerializable import emu.skyline.utils.GpuDriverHelper +import emu.skyline.utils.serializable import java.nio.ByteBuffer import java.nio.ByteOrder import java.util.concurrent.FutureTask @@ -218,7 +219,7 @@ class EmulationActivity : AppCompatActivity(), SurfaceHolder.Callback, View.OnTo * Populates the [item] member with data from the intent */ private fun populateAppItem() { - val intentItem = intent.getSerializableExtra(AppItemTag) as AppItem? + val intentItem = intent.serializable(AppItemTag) as AppItem? if (intentItem != null) { item = intentItem return diff --git a/app/src/main/java/emu/skyline/preference/GpuDriverActivity.kt b/app/src/main/java/emu/skyline/preference/GpuDriverActivity.kt index 3c27f4d4..981d0fec 100644 --- a/app/src/main/java/emu/skyline/preference/GpuDriverActivity.kt +++ b/app/src/main/java/emu/skyline/preference/GpuDriverActivity.kt @@ -29,6 +29,7 @@ import emu.skyline.settings.EmulationSettings import emu.skyline.utils.GpuDriverHelper import emu.skyline.utils.GpuDriverInstallResult import emu.skyline.utils.WindowInsetsHelper +import emu.skyline.utils.serializable import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -40,7 +41,7 @@ import kotlinx.coroutines.launch class GpuDriverActivity : AppCompatActivity() { private val binding by lazy { GpuDriverActivityBinding.inflate(layoutInflater) } - private val item by lazy { intent.extras?.getSerializable(AppItemTag) as AppItem? } + private val item by lazy { intent.extras?.serializable(AppItemTag) as AppItem? } private val adapter = SelectableGenericAdapter(0) diff --git a/app/src/main/java/emu/skyline/settings/GameSettingsFragment.kt b/app/src/main/java/emu/skyline/settings/GameSettingsFragment.kt index 8bff8ec2..86352962 100644 --- a/app/src/main/java/emu/skyline/settings/GameSettingsFragment.kt +++ b/app/src/main/java/emu/skyline/settings/GameSettingsFragment.kt @@ -17,6 +17,7 @@ import emu.skyline.preference.GpuDriverPreference import emu.skyline.preference.IntegerListPreference import emu.skyline.utils.GpuDriverHelper import emu.skyline.utils.WindowInsetsHelper +import emu.skyline.utils.serializable /** * This fragment is used to display custom game preferences @@ -26,7 +27,7 @@ class GameSettingsFragment : PreferenceFragmentCompat() { private const val DIALOG_FRAGMENT_TAG = "androidx.preference.PreferenceFragment.DIALOG" } - private val item by lazy { requireArguments().getSerializable(AppItemTag)!! as AppItem } + private val item by lazy { requireArguments().serializable(AppItemTag)!! } override fun onViewCreated(view : View, savedInstanceState : Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/emu/skyline/utils/SerializationHelper.kt b/app/src/main/java/emu/skyline/utils/SerializationHelper.kt index a8af4d50..cb1bb723 100644 --- a/app/src/main/java/emu/skyline/utils/SerializationHelper.kt +++ b/app/src/main/java/emu/skyline/utils/SerializationHelper.kt @@ -5,11 +5,23 @@ package emu.skyline.utils +import android.content.Intent +import android.os.Build +import android.os.Bundle import java.io.File import java.io.ObjectInputStream import java.io.ObjectOutputStream import java.io.Serializable +inline fun Bundle.serializable(key: String): T? = when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getSerializable(key, T::class.java) + else -> @Suppress("DEPRECATION") getSerializable(key) as? T +} +inline fun Intent.serializable(key: String): T? = when { + Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getSerializableExtra(key, T::class.java) + else -> @Suppress("DEPRECATION") getSerializableExtra(key) as? T +} + fun T.toFile(file : File) { ObjectOutputStream(file.outputStream()).use { it.writeObject(this) } }