MAUI配置Deeplink触发Java.lang.RuntimeException异常排查
.NET 9 MAUI Android Deeplink配置引发RuntimeException的原因及修复方案
问题根源
你遇到的Java.lang.RuntimeException是因为手动重复定义了MainActivity的
具体冲突点
- MAUI默认会通过MSBuild自动注册MainActivity,包含启动所需的
LAUNCHER类型intent-filter以及基础的Activity属性配置。 - 你手动在AndroidManifest.xml中完整定义了
DeeplinkTest.MainActivity的节点,这就造成同一个Activity被两次注册,系统启动时无法识别正确的组件定义。
修复方案
方案1:修改AndroidManifest.xml(仅追加Deeplink配置)
不要重复定义完整的MainActivity节点,仅添加Deeplink对应的intent-filter即可,让MAUI自动处理基础的Activity注册:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/appicon" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"> <!-- 仅针对已自动注册的MainActivity添加Deeplink的intent-filter --> <activity android:name="DeeplinkTest.MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" android:host="foo.com" android:pathPrefix="/bar/" /> </intent-filter> </activity> </application> </manifest>
方案2:使用MAUI特性配置(更推荐)
直接在MainActivity.cs中通过[IntentFilter]特性配置Deeplink,无需手动修改AndroidManifest.xml,完全避免配置冲突:
namespace DeeplinkTest; [Activity(Exported = true)] [IntentFilter( new[] { Android.Content.Intent.ActionView }, Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable }, DataScheme = "https", DataHost = "foo.com", DataPathPrefix = "/bar/" )] public class MainActivity : MauiAppCompatActivity { // 保留原有代码即可 }
内容的提问来源于stack exchange,提问作者PerlDev
相关产品推荐
相关产品推荐

