Linking.getInitialURL() returns the task's first link after a link relaunches a reclaimed Android app
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Inizia leggendo ReactActivity.onNewIntent e IntentModule.getInitialURL(); la issue identifica entrambi i punti di ingresso e include un riproduttore con una correzione per MainActivity. Segui i passaggi del riproduttore su Android e conferma che l’app riavviata segnali reproducer://second tramite getInitialURL() o un evento url.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
When Android ends a backgrounded app's process but keeps its task, a link to the app relaunches it into that task: Android recreates the activity from the task's first intent and passes the link to onNewIntent. The link never reaches JavaScript. Linking.getInitialURL() answers the task's first link, and no url event fires.
IntentModule.getInitialURL() reads currentActivity.intent, and getIntent() keeps returning the task's first intent until the activity calls setIntent() (Activity.onNewIntent). ReactActivity.onNewIntent hands the intent to its delegate without calling setIntent.
Calling setIntent(intent) first in ReactActivity.onNewIntent fixes it: with that line in the reproducer's MainActivity (its verify/set-intent branch), every round below answers reproducer://second. I'm happy to open a PR with it.
Steps to reproduce
- Build and install the reproducer's release APK:
cd ReproducerApp/android && ./gradlew assembleRelease && adb install -r app/build/outputs/apk/release/app-release.apk. - Open the first link:
adb shell am start -a android.intent.action.VIEW -d reproducer://first com.reproducerapp. The screen showsgetInitialURL(): reproducer://first. - Background the app and let Android end its process while the task stays in Recents:
adb shell input keyevent KEYCODE_HOME,adb shell am start -a android.settings.SETTINGS,adb shell input keyevent KEYCODE_HOME, thenadb shell am kill com.reproducerappuntiladb shell pidof com.reproducerappprints nothing. - Open the second link:
adb shell am start -a android.intent.action.VIEW -d reproducer://second com.reproducerapp.
Expected: getInitialURL(): reproducer://second, or a url event carrying it.
Actual: getInitialURL(): reproducer://first and last url event: null.
A cold start on the second link (adb shell am force-stop com.reproducerapp, then step 4) shows reproducer://second.
React Native Version
0.87.1
Affected Platforms
Runtime - Android
Output of npx @react-native-community/cli info
System:
OS: Windows 11 10.0.26200
CPU: "(32) x64 AMD Ryzen 9 9950X3D 16-Core Processor "
Memory: 170.35 GB / 255.67 GB
Binaries:
Node:
version: 26.5.0
path: C:\Program Files\nodejs\node.EXE
Yarn:
version: 1.22.22
path: C:\Users\<user>\AppData\Roaming\npm\yarn.CMD
npm:
version: 12.0.1
path: C:\Program Files\nodejs\npm.CMD
Watchman: Not Found
SDKs:
Android SDK:
API Levels:
- "35"
- "35"
- "35"
- "36"
- "37"
Build Tools:
- 35.0.0
- 36.0.0
- 36.1.0
- 37.0.0
System Images:
- android-36.1 | Google Play Intel x86_64 Atom
- android-36.1 | Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom
Android NDK: Not Found
Windows SDK: Not Found
IDEs:
Android Studio: AI-252.27397.103.2522.14617522
Visual Studio: Not Found
Languages:
Java:
version: 17.0.20.1
path: C:\Program Files\Microsoft\jdk-17.0.20.101-hotspot\bin\javac.EXE
Ruby: Not Found
npmPackages:
"@react-native-community/cli":
installed: 20.2.0
wanted: 20.2.0
react:
installed: 19.2.3
wanted: 19.2.3
react-native:
installed: 0.87.1
wanted: 0.87.1
react-native-windows: Not Found
npmGlobalPackages:
"*react-native*": Not Found
Android:
hermesEnabled: true
newArchEnabled: true
iOS:
hermesEnabled: Not found
newArchEnabled: Not found
Stacktrace or Logs
Galaxy S23 (SM-S911B), Android 14 (API 34), release build, three rounds of steps 2–4:
round 1: cold [getInitialURL(): reproducer://first] · relaunched [getInitialURL(): reproducer://first] [last url event: null]
round 2: cold [getInitialURL(): reproducer://first] · relaunched [getInitialURL(): reproducer://first] [last url event: null]
round 3: cold [getInitialURL(): reproducer://first] · relaunched [getInitialURL(): reproducer://first] [last url event: null]
cold start on the second link: [getInitialURL(): reproducer://second]
With setIntent(intent) first in MainActivity.onNewIntent, same device and steps:
round 1: cold [getInitialURL(): reproducer://first] · relaunched [getInitialURL(): reproducer://second] [last url event: null]
round 2: cold [getInitialURL(): reproducer://first] · relaunched [getInitialURL(): reproducer://second] [last url event: null]
round 3: cold [getInitialURL(): reproducer://first] · relaunched [getInitialURL(): reproducer://second] [last url event: null]
MANDATORY Reproducer
https://github.com/YevheniiKotyrlo/rn-relaunch-link-repro
Screenshots and Videos
The screen after step 4, release build on an Android 16 (API 36) emulator:
| stock | with setIntent(intent) in MainActivity.onNewIntent |
|---|---|
![]() |
![]() |
- Lingua principale
- C++
- Stelle
- 127k
- Fork
- 25.3k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di react/react-native
-
Fabric TextInput: prepareForRecycle leaves stale inputAccessoryViewButtonLabel (empty Done bar)Forse già presa Una pull request collegata a questa issue è aperta o già unita. ApertaNeeds: Author Feedback Needs: Repro
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
react/react-native#58952 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Needs: Attention Needs: Repro
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
react/react-native#58904 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Needs: Author Feedback Needs: Repro
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
react/react-native#58659 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Needs: Author Feedback Needs: Repro
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
react/react-native#58621 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Add TypeScript declaration for the performance globalForse già presa @Cedric921 l’ha presa 10 giorni fa. ApertaNeeds: Attention Needs: Repro
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
react/react-native#58610 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di react/react-native
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
bitcoin-core/gui-qml#1030 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
tesseract-robotics/tesseract#1384 ·
-
Fix the silent drop of oversized clusters in the plain EuclideanClusterObjectDetectorForse già presa @xmfcx l’ha presa oggi. Apertacomponent:perception type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
autowarefoundation/autoware_core#1497 ·
I maintainer di solito rispondono entro 2 giorni
-
agent:WSL bug linux LOW
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
I maintainer di solito rispondono entro 1 giorno
-
Build failure: limoAperta0.kind: build failure
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno

