Flutter Android深度链接问题:点击后需在新标签打开而非消息应用内
解决Flutter Android深度链接在第三方应用内打开的问题
要让点击深度链接时,你的Flutter应用以独立任务栈启动而非在消息应用内打开,需要修改AndroidManifest.xml中处理深度链接的Activity(通常是MainActivity)的以下配置:
设置Activity的启动模式为
singleTask
在<activity>标签中添加android:launchMode="singleTask",这会让系统为你的应用创建独立的任务栈启动Activity,不会复用消息应用的任务栈。如果应用已经在后台运行,会直接将已有的任务栈带到前台。明确配置
taskAffinity(可选但建议)
添加android:taskAffinity="你的应用包名",确保Activity属于应用自身的任务组,避免和其他应用共享任务栈。默认情况下taskAffinity就是应用包名,但若你之前修改过这个属性,需要明确设置回来。确认深度链接的
intent-filter配置正确
处理深度链接的intent-filter必须包含以下内容,保证系统能识别该Activity可处理外部链接请求:<action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" />
同时要正确配置data标签的scheme和host,对应你的深度链接规则。
示例配置代码
<activity android:name=".MainActivity" android:launchMode="singleTask" android:taskAffinity="com.your.app.package" android:exported="true"> <!-- 应用启动的intent-filter --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <!-- 深度链接处理的intent-filter --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 替换成你的深度链接scheme和host --> <data android:scheme="myapp" android:host="example.com" /> </intent-filter> </activity>
内容的提问来源于stack exchange,提问作者Vikas Kumar
相关产品推荐
相关产品推荐

