android: Fixed crash on Google Play when selecting user dir on SD card

This commit is contained in:
OpenSauce04 2026-01-08 23:38:34 +00:00
parent 8e8cb3d97a
commit def69abc11
3 changed files with 21 additions and 14 deletions

View file

@ -25,6 +25,7 @@ import androidx.fragment.app.DialogFragment
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import org.citra.citra_emu.activities.EmulationActivity import org.citra.citra_emu.activities.EmulationActivity
import org.citra.citra_emu.utils.BuildUtil
import org.citra.citra_emu.utils.FileUtil import org.citra.citra_emu.utils.FileUtil
import org.citra.citra_emu.utils.Log import org.citra.citra_emu.utils.Log
import org.citra.citra_emu.utils.RemovableStorageHelper import org.citra.citra_emu.utils.RemovableStorageHelper
@ -637,6 +638,8 @@ object NativeLibrary {
@Keep @Keep
@JvmStatic @JvmStatic
fun getUserDirectory(uriOverride: Uri? = null): String { fun getUserDirectory(uriOverride: Uri? = null): String {
BuildUtil.assertNotGooglePlay()
val preferences: SharedPreferences = val preferences: SharedPreferences =
PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext)

View file

@ -568,6 +568,7 @@ class SetupFragment : Fragment() {
return@registerForActivityResult return@registerForActivityResult
} }
if (BuildConfig.FLAVOR != "googlePlay") {
if (NativeLibrary.getUserDirectory(result) == "") { if (NativeLibrary.getUserDirectory(result) == "") {
SelectUserDirectoryDialogFragment.newInstance( SelectUserDirectoryDialogFragment.newInstance(
mainActivity, mainActivity,
@ -576,6 +577,7 @@ class SetupFragment : Fragment() {
).show(mainActivity.supportFragmentManager, SelectUserDirectoryDialogFragment.TAG) ).show(mainActivity.supportFragmentManager, SelectUserDirectoryDialogFragment.TAG)
return@registerForActivityResult return@registerForActivityResult
} }
}
CitraDirectoryHelper(requireActivity(), true).showCitraDirectoryDialog(result, pageButtonCallback, checkForButtonState) CitraDirectoryHelper(requireActivity(), true).showCitraDirectoryDialog(result, pageButtonCallback, checkForButtonState)
} }

View file

@ -364,6 +364,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
return@registerForActivityResult return@registerForActivityResult
} }
if (BuildConfig.FLAVOR != "googlePlay") {
if (NativeLibrary.getUserDirectory(result) == "") { if (NativeLibrary.getUserDirectory(result) == "") {
SelectUserDirectoryDialogFragment.newInstance( SelectUserDirectoryDialogFragment.newInstance(
this, this,
@ -372,6 +373,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
).show(supportFragmentManager, SelectUserDirectoryDialogFragment.TAG) ).show(supportFragmentManager, SelectUserDirectoryDialogFragment.TAG)
return@registerForActivityResult return@registerForActivityResult
} }
}
CitraDirectoryHelper(this@MainActivity, permissionsLost) CitraDirectoryHelper(this@MainActivity, permissionsLost)
.showCitraDirectoryDialog(result, buttonState = {}) .showCitraDirectoryDialog(result, buttonState = {})