diff options
| author | JosJuice <josjuice@gmail.com> | 2026-08-29 11:15:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-29 11:15:38 +0200 |
| commit | 9b50b88d2e48435652175d188c4da38fcb538a98 (patch) | |
| tree | ec92435f5cb8859f6da3da079a2cef79a8c47264 /Source/Android | |
| parent | 28adf6dd886db508bcd361316ae94920bb395121 (diff) | |
| parent | b1e360e1e4f520818f6e0c8fdcd5be7becf7e1ed (diff) | |
Merge pull request #14829 from TorresOwO/fix-skylanders-crash-13956
Android: Fix Crash when loading Skylanders file
Diffstat (limited to 'Source/Android')
4 files changed, 21 insertions, 13 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt index 8a1d8addbd..23ffe96cd6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.kt @@ -43,6 +43,7 @@ import org.dolphinemu.dolphinemu.features.infinitybase.ui.FigureSlotAdapter import org.dolphinemu.dolphinemu.features.input.model.ControllerInterface import org.dolphinemu.dolphinemu.features.input.model.DolphinSensorEventListener import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting +import org.dolphinemu.dolphinemu.utils.ContentHandler import org.dolphinemu.dolphinemu.features.settings.model.IntSetting import org.dolphinemu.dolphinemu.features.settings.model.Settings import org.dolphinemu.dolphinemu.features.settings.model.StringSetting @@ -104,17 +105,21 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider { } val requestSkylanderFile = registerForActivityResult( - ActivityResultContracts.GetContent() + ActivityResultContracts.OpenDocument() ) { uri: Uri? -> if (uri != null) { val slot = SkylanderConfig.loadSkylander( skylanderSlots[skylanderSlot].portalSlot, uri.toString() - )!! - clearSkylander(skylanderSlot) - skylanderSlots[skylanderSlot].portalSlot = slot.first!! - skylanderSlots[skylanderSlot].label = slot.second!! - skylandersBinding.figureManager.adapter!!.notifyItemChanged(skylanderSlot) + ) + if (slot != null && slot.first != null && slot.second != null) { + clearSkylander(skylanderSlot) + skylanderSlots[skylanderSlot].portalSlot = slot.first!! + skylanderSlots[skylanderSlot].label = slot.second!! + skylandersBinding.figureManager.adapter?.notifyItemChanged(skylanderSlot) + } else { + Toast.makeText(this, R.string.skylander_load_failed, Toast.LENGTH_SHORT).show() + } skylanderSlot = -1 skylanderData = Skylander.BLANK_SKYLANDER } @@ -131,10 +136,12 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider { uri.toString(), skylanderSlots[skylanderSlot].portalSlot ) - clearSkylander(skylanderSlot) - skylanderSlots[skylanderSlot].portalSlot = slot.first - skylanderSlots[skylanderSlot].label = slot.second - skylandersBinding.figureManager.adapter?.notifyItemChanged(skylanderSlot) + if (slot.first != -1) { + clearSkylander(skylanderSlot) + skylanderSlots[skylanderSlot].portalSlot = slot.first + skylanderSlots[skylanderSlot].label = slot.second + skylandersBinding.figureManager.adapter?.notifyItemChanged(skylanderSlot) + } skylanderSlot = -1 skylanderData = Skylander.BLANK_SKYLANDER } @@ -142,7 +149,7 @@ class EmulationActivity : AppCompatActivity(), ThemeProvider { } val requestInfinityFigureFile = registerForActivityResult( - ActivityResultContracts.GetContent() + ActivityResultContracts.OpenDocument() ) { uri: Uri? -> if (uri != null) { val label = InfinityConfig.loadFigure(infinityPosition, uri.toString()) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/infinitybase/ui/FigureSlotAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/infinitybase/ui/FigureSlotAdapter.kt index 0613274c30..6839d6f803 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/infinitybase/ui/FigureSlotAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/infinitybase/ui/FigureSlotAdapter.kt @@ -51,7 +51,7 @@ class FigureSlotAdapter( holder.binding.buttonLoadFigure.setOnClickListener { activity.setInfinityFigureData(0, "", figure.position, position) - activity.requestInfinityFigureFile.launch("*/*") + activity.requestInfinityFigureFile.launch(arrayOf("*/*")) } val inflater = LayoutInflater.from(activity) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt index ed3dde3e40..4c23eb4a3c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt @@ -47,7 +47,7 @@ class SkylanderSlotAdapter( holder.binding.buttonLoadFigure.setOnClickListener { activity.setSkylanderData(0, 0, "", position) - activity.requestSkylanderFile.launch("*/*") + activity.requestSkylanderFile.launch(arrayOf("*/*")) } val inflater = LayoutInflater.from(activity) diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index 2f41de8fc7..ccd5ee3b70 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -956,6 +956,7 @@ It can efficiently compress both junk data and encrypted Wii data. <string name="skylander_id">ID</string> <string name="skylander_variant">Variant</string> <string name="invalid_skylander">Invalid Skylander Selection</string> + <string name="skylander_load_failed">Failed to load Skylander figure</string> <string name="emulate_infinity_base">Infinity Base</string> <string name="infinity_manager">Infinity Manager</string> |
