You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:25:01