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,13 +568,15 @@ class SetupFragment : Fragment() {
return@registerForActivityResult return@registerForActivityResult
} }
if (NativeLibrary.getUserDirectory(result) == "") { if (BuildConfig.FLAVOR != "googlePlay") {
SelectUserDirectoryDialogFragment.newInstance( if (NativeLibrary.getUserDirectory(result) == "") {
mainActivity, SelectUserDirectoryDialogFragment.newInstance(
R.string.invalid_selection, mainActivity,
R.string.invalid_user_directory R.string.invalid_selection,
).show(mainActivity.supportFragmentManager, SelectUserDirectoryDialogFragment.TAG) R.string.invalid_user_directory
return@registerForActivityResult ).show(mainActivity.supportFragmentManager, SelectUserDirectoryDialogFragment.TAG)
return@registerForActivityResult
}
} }
CitraDirectoryHelper(requireActivity(), true).showCitraDirectoryDialog(result, pageButtonCallback, checkForButtonState) CitraDirectoryHelper(requireActivity(), true).showCitraDirectoryDialog(result, pageButtonCallback, checkForButtonState)

View file

@ -364,13 +364,15 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
return@registerForActivityResult return@registerForActivityResult
} }
if (NativeLibrary.getUserDirectory(result) == "") { if (BuildConfig.FLAVOR != "googlePlay") {
SelectUserDirectoryDialogFragment.newInstance( if (NativeLibrary.getUserDirectory(result) == "") {
this, SelectUserDirectoryDialogFragment.newInstance(
R.string.invalid_selection, this,
R.string.invalid_user_directory R.string.invalid_selection,
).show(supportFragmentManager, SelectUserDirectoryDialogFragment.TAG) R.string.invalid_user_directory
return@registerForActivityResult ).show(supportFragmentManager, SelectUserDirectoryDialogFragment.TAG)
return@registerForActivityResult
}
} }
CitraDirectoryHelper(this@MainActivity, permissionsLost) CitraDirectoryHelper(this@MainActivity, permissionsLost)