From 0ff2aebdf173c6bf6a8458fd2893917c132ce08d Mon Sep 17 00:00:00 2001 From: OpenSauce04 Date: Sat, 14 Mar 2026 16:52:53 +0000 Subject: [PATCH] android: Fixed Amiibo files failing to load on vanilla --- .../citra_emu/activities/EmulationActivity.kt | 14 +++++++++++--- .../citra/citra_emu/fragments/EmulationFragment.kt | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt index 1e372720e..5f5215876 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt @@ -10,7 +10,6 @@ import android.content.Intent import android.content.SharedPreferences import android.content.pm.PackageManager import android.net.Uri -import android.os.Build import android.os.Bundle import android.view.InputDevice import android.view.KeyEvent @@ -21,6 +20,7 @@ import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity +import androidx.core.net.toUri import androidx.core.os.BundleCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat @@ -43,6 +43,7 @@ import org.citra.citra_emu.features.settings.model.view.InputBindingSetting import org.citra.citra_emu.fragments.EmulationFragment import org.citra.citra_emu.fragments.MessageDialogFragment import org.citra.citra_emu.model.Game +import org.citra.citra_emu.utils.BuildUtil import org.citra.citra_emu.utils.ControllerMappingHelper import org.citra.citra_emu.utils.FileBrowserHelper import org.citra.citra_emu.utils.EmulationLifecycleUtil @@ -294,6 +295,7 @@ class EmulationActivity : AppCompatActivity() { private fun onAmiiboSelected(selectedFile: String) { val success = NativeLibrary.loadAmiibo(selectedFile) if (!success) { + Log.error("[EmulationActivity] Failed to load Amiibo file: $selectedFile") MessageDialogFragment.newInstance( R.string.amiibo_load_error, R.string.amiibo_load_error_message @@ -516,13 +518,19 @@ class EmulationActivity : AppCompatActivity() { return true } - val openFileLauncher = + val openAmiiboFileLauncher = registerForActivityResult(OpenFileResultContract()) { result: Intent? -> if (result == null) return@registerForActivityResult val selectedFiles = FileBrowserHelper.getSelectedFiles( result, applicationContext, listOf("bin") ) ?: return@registerForActivityResult - onAmiiboSelected(selectedFiles[0]) + if (BuildUtil.isGooglePlayBuild) { + onAmiiboSelected(selectedFiles[0]) + } else { + val fileUri = selectedFiles[0].toUri() + val nativePath = "!" + NativeLibrary.getNativePath(fileUri) + onAmiiboSelected(nativePath) + } } val openImageLauncher = diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt index d4ce96a55..2cd35ff46 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt @@ -854,7 +854,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram popupMenu.setOnMenuItemClickListener { when (it.itemId) { R.id.menu_emulation_amiibo_load -> { - emulationActivity.openFileLauncher.launch(false) + emulationActivity.openAmiiboFileLauncher.launch(false) true }