如何让.NET MAUI Android TV应用在设备开机时自动启动
.NET 8 Android TV 开机自启问题解决
你的代码存在几个关键问题导致开机自启不生效,以下是具体修复方案:
1. 补全BroadcastReceiver核心逻辑
你的OnReceive方法为空,没有实现启动应用的核心代码,需要添加启动主Activity的逻辑:
using Android.App; using Android.Content; using Android.Content.PM; [assembly: UsesPermission(Manifest.Permission.ReceiveBootCompleted)] namespace MMusicPlayer.Platforms.Android { [BroadcastReceiver(Enabled = true, Exported = true)] [IntentFilter(new[] { Intent.ActionBootCompleted })] public class StartReceiver : BroadcastReceiver { public override void OnReceive(Context? context, Intent? intent) { if (intent?.Action != Intent.ActionBootCompleted || context == null) return; // 获取应用主Activity的启动Intent var launchIntent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName); if (launchIntent != null) { // 必须添加NEW_TASK标记,否则在BroadcastReceiver中无法启动Activity launchIntent.AddFlags(ActivityFlags.NewTask); context.StartActivity(launchIntent); } } } }
2. 关键配置说明
- Exported属性:Android 12(API 31)及以上版本要求,接收
ACTION_BOOT_COMPLETED这类隐式广播的BroadcastReceiver必须显式设置Exported = true,否则系统会拦截广播。 - ActivityFlags.NewTask:在BroadcastReceiver这类非Activity组件中启动Activity,必须添加该标记,否则会抛出运行异常。
3. Android TV 额外注意事项
- 应用需手动启动过一次:Android系统默认限制从未被用户手动启动的应用接收开机广播,需先手动打开一次应用,后续开机才会触发自启。
- 电池优化豁免:Android 10及以上版本,若应用被纳入电池优化范围,可能被阻止后台启动。可申请
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS权限,并引导用户开启豁免。 - 厂商定制权限:部分国产Android TV设备(如小米、创维)有独立的自启动管理开关,需用户在系统设置中手动开启你的应用自启权限。
4. 冗余代码清理
原代码中using static Android.Provider.ContactsContract.CommonDataKinds;、using static Java.Util.Jar.Attributes;等语句完全不必要,建议删除以避免编译冗余或潜在冲突。
内容的提问来源于stack exchange,提问作者digitala
相关产品推荐
相关产品推荐

