[Scummvm-tracker] [ScummVM :: Bugs] #17261: Android 16 / ScummVM 2026.3.0: external launch of specific games fails when Intent data is supplied to SplashActivity

ScummVM :: Bugs trac at scummvm.org
Fri Oct 2 12:54:38 UTC 2026


#17261: Android 16 / ScummVM 2026.3.0: external launch of specific games fails when
Intent data is supplied to SplashActivity
-----------------------+---------------------------
Reporter:  sibelius80  |      Owner:  (none)
    Type:  defect      |     Status:  new
Priority:  normal      |  Component:  Port: Android
 Version:              |   Keywords:
    Game:              |
-----------------------+---------------------------
 ### Environment
 - ScummVM: **2026.3.0**
 - Android: **Android 16**
 - Device: Snapdragon 8 Elite / Adreno 830
 - ScummVM package: `org.scummvm.scummvm`
 - ES-DE: **3.5.0-65 (r52)**

 ### Summary
 Launching games directly from the standalone ScummVM app works correctly.

 Launching the same games externally from ES-DE fails immediately. ES-DE
 invokes:

 ```text
 Package: org.scummvm.scummvm
 Activity: org.scummvm.scummvm.SplashActivity
 Action: android.intent.action.MAIN
 Data: <scummvm target>
 ```

 and receives:

 ```text
 Launch terminated with nonzero return value -1
 ```

 The problem appears to be related to Android 16 strict Intent matching
 when `SplashActivity` is launched with any Intent data.

 ### Reproduction

 The launcher activity resolves correctly:

 ```bash
 adb shell cmd package resolve-activity --brief org.scummvm.scummvm
 ```

 Output:

 ```text
 org.scummvm.scummvm/.SplashActivity
 ```

 The activity is exported:

 ```bash
 adb shell cmd package query-activities \
   -a android.intent.action.MAIN \
   -c android.intent.category.LAUNCHER \
   -p org.scummvm.scummvm
 ```

 Relevant output:

 ```text
 name=org.scummvm.scummvm.SplashActivity
 enabled=true
 exported=true
 ```

 Launching `SplashActivity` without Intent data succeeds:

 ```bash
 adb shell am start \
   --user 0 \
   -n org.scummvm.scummvm/.SplashActivity \
   -a android.intent.action.MAIN \
   -c android.intent.category.LAUNCHER
 ```

 Output:

 ```text
 Starting: Intent { act=android.intent.action.MAIN
 cat=[android.intent.category.LAUNCHER]
 cmp=org.scummvm.scummvm/.SplashActivity }
 ```

 ScummVM opens normally.

 However, adding **any** Intent data causes Android to reject the activity:

 ```bash
 adb shell am start \
   --user 0 \
   -n org.scummvm.scummvm/.SplashActivity \
   -a android.intent.action.MAIN \
   -c android.intent.category.LAUNCHER \
   -d "test"
 ```

 Output:

 ```text
 Starting: Intent { act=android.intent.action.MAIN
 cat=[android.intent.category.LAUNCHER] dat=
 cmp=org.scummvm.scummvm/.SplashActivity }
 Error type 3
 Error: Activity class
 {org.scummvm.scummvm/org.scummvm.scummvm.SplashActivity} does not exist.
 ```

 The same occurs with an actual ScummVM target:

 ```bash
 adb shell am start \
   --user 0 \
   -n org.scummvm.scummvm/.SplashActivity \
   -a android.intent.action.MAIN \
   -c android.intent.category.LAUNCHER \
   -d "sword2-win-it"
 ```

 and with a ScummVM URI:

 ```bash
 adb shell am start \
   --user 0 \
   -n org.scummvm.scummvm/.SplashActivity \
   -a android.intent.action.MAIN \
   -d 'scummvm:sword2-win-it'
 ```

 Both fail with:

 ```text
 Error type 3
 Error: Activity class
 {org.scummvm.scummvm/org.scummvm.scummvm.SplashActivity} does not exist.
 ```

 ### Manifest observations

 The installed 2026.3.0 APK has:

 ```text
 android:targetSdkVersion=36
 android:compileSdkVersion=36
 ```

 and the application includes:

 ```text
 android:intentMatchingFlags=0x00000002
 ```

 `SplashActivity` is:

 ```text
 android:exported=true
 ```

 with the following Intent filter:

 ```text
 Action:
 android.intent.action.MAIN

 Categories:
 android.intent.category.LAUNCHER
 tv.ouya.intent.category.GAME
 android.intent.category.LEANBACK_LAUNCHER
 ```

 There is **no `<data>` element** in the `SplashActivity` Intent filter.

 The internal activity is:

 ```text
 org.scummvm.scummvm.ScummVMActivity
 android:exported=false
 ```

 so external launchers cannot bypass `SplashActivity`.

 ### Source-code observation

 Current ScummVM Android code still appears to expect the game target via
 Intent data.

 `SplashActivity` forwards incoming Intent action/data to
 `ScummVMActivity`.

 `ScummVMActivity` reads:

 ```java
 getIntent().getData()
 ```

 and uses the URI scheme-specific part as the ScummVM target.

 ScummVM also creates game launch URIs internally using:

 ```java
 Uri.fromParts("scummvm", target, null)
 ```

 This suggests Intent data is still the intended mechanism for launching a
 specific target.

 ### Expected behavior
 An external launcher should be able to start:

 ```text
 org.scummvm.scummvm/.SplashActivity
 ```

 with a ScummVM target supplied as Intent data and have ScummVM launch that
 configured game.

 ### Actual behavior
 On Android 16 / target SDK 36, `SplashActivity` starts successfully only
 when no Intent data is supplied.

 As soon as any data URI is attached, Android rejects the explicit Intent
 before ScummVM runs.

 ### Possible cause
 This appears related to Android 16 stricter Intent-filter matching
 combined with:

 ```text
 android:intentMatchingFlags=0x00000002
 ```

 and the absence of a `<data>` declaration on the exported `SplashActivity`
 Intent filter.

 ### Possible fixes
 One of the following may be required:

 - add an appropriate `<data>` rule to the `SplashActivity` Intent filter
 for externally supplied ScummVM target URIs;
 - adjust `android:intentMatchingFlags` / strict Intent matching behavior
 for this activity;
 - expose a supported external launch mechanism that does not rely on
 unmatched Intent data.

 ### Additional context
 This was discovered through ES-DE, but the behavior can be reproduced
 directly with `adb`, so it does not appear to be specific to ES-DE.

 Standalone ScummVM launches the configured games correctly.
-- 
Ticket URL: <https://bugs.scummvm.org/ticket/17261>
ScummVM :: Bugs <https://bugs.scummvm.org>
ScummVM


More information about the Scummvm-tracker mailing list