From df76bae5dcdde85bec4ad44d30d1de42f77c72f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 20 Oct 2026 12:27:59 +0200 Subject: [PATCH] Android: Read the Args extra also when launched with a URI - Fixes #18528 Launchers typically open the game with ACTION_VIEW and a content:// URI, so they could never pass options before. Co-Authored-By: Claude Opus 5.5 (1M context) --- android/src/org/ppsspp/ppsspp/PpssppActivity.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/android/src/org/ppsspp/ppsspp/PpssppActivity.java b/android/src/org/ppsspp/ppsspp/PpssppActivity.java index 43026d568a..f779e3f6fa 100644 --- a/android/src/org/ppsspp/ppsspp/PpssppActivity.java +++ b/android/src/org/ppsspp/ppsspp/PpssppActivity.java @@ -1979,13 +1979,19 @@ public class PpssppActivity extends AppCompatActivity implements SensorEventList private static String parseIntent(Intent intent) { Uri data = intent.getData(); + String args = intent.getStringExtra(ARGS_EXTRA_KEY); if (data != null) { String path = data.toString(); // Do some unescaping. Not really sure why needed. - return "\"" + path.replace("\\", "\\\\").replace("\"", "\\\"") + "\""; + String quotedPath = "\"" + path.replace("\\", "\\\\").replace("\"", "\\\"") + "\""; + if (args != null) { + // Launchers that open the game by URI can still pass options. The path goes first, so it's the one booted. + Log.i(TAG, "Found args parameter in extra-data alongside the data URI: " + args); + return quotedPath + " " + args; + } + return quotedPath; } else { String param = intent.getStringExtra(SHORTCUT_EXTRA_KEY); - String args = intent.getStringExtra(ARGS_EXTRA_KEY); if (param != null) { Log.i(TAG, "Found Shortcut Parameter in extra-data: " + param); return "\"" + param.replace("\\", "\\\\").replace("\"", "\\\"") + "\"";