Android 12后台Deep Link无法自动唤起React Native应用(Android 11正常)
解决Android 12上React Native应用Deep Link无法唤起的问题
检查Android 12的Intent过滤规则变更
Android 12对隐式Intent的处理更严格,即便已申请QUERY_ALL_PACKAGES权限,部分场景下仍需调整Intent过滤器配置以确保优先级。
提升Intent过滤器优先级
在Deep Link对应的意图过滤器中添加android:priority="1000"属性,确保你的应用在匹配Deep Link时拥有最高优先级:
<intent-filter android:priority="1000"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="your-custom-scheme" /> <!-- 替换为你的实际Scheme --> </intent-filter>
验证react-native-navigation的Deep Link处理逻辑
假设你使用的是react-native-navigation v7.37.0(最新稳定版),需确保MainActivity中正确处理新Intent:
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); Navigation.handleDeepLink(intent); }
同时在RN代码中注册Deep Link监听器,确保路由逻辑正常执行:
import { Navigation } from 'react-native-navigation'; Navigation.events().registerDeepLinkListener((event) => { const routeParts = event.link.split('/'); // 此处添加你的Deep Link路由分发逻辑 });
确认Gradle与AGP版本兼容性
Android 12要求AGP 7.0+、Gradle 7.0+版本配合使用,示例兼容版本:
- Gradle版本:7.4
- AGP版本:7.0.4
若版本不匹配,可能导致Intent处理流程异常,建议严格保持两者版本兼容。
检查Activity的exported属性
Android 12及以上要求启动Activity显式声明android:exported="true",确保你的MainActivity配置正确:
<activity android:name=".MainActivity" android:exported="true" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize">
排查系统默认链接处理设置
在Android 12设备上,进入应用「应用信息」→「默认打开」→「链接处理」,确认你的应用已被设为对应Deep Link Scheme的默认处理应用。若未设置,需引导用户手动配置。
内容的提问来源于stack exchange,提问作者Nilkanth Suvagiya
相关产品推荐
相关产品推荐

