如何在 MAUI 安卓中接收应用安装与卸载广播

本教程讲解了在 .NET MAUI 安卓应用中如何通过动态注册 BroadcastReceiver 来接收应用的安装、替换和卸载广播,适用于安卓8.0及以上版本。

  • Android8.0之前版本(未测试)
    直接创建广播接收类即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    [BroadcastReceiver(Enabled = true, Exported = true)]
    [IntentFilter([Intent.ActionPackageAdded, Intent.ActionPackageReplaced, Intent.ActionPackageRemoved], DataScheme = "package")]
    public class APKBroadcastReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context? context, Intent? intent)
        {
            Toast.MakeText(context, "APK安装...", ToastLength.Long)?.Show();
        }
    }
    
  • Android8.0以后版本
    Android8.0之后很多静态广播不能用了,想要接收应用安装、覆盖安装和删除的广播,需要动态注册广播。
    创建广播接收类。

    1
    2
    3
    4
    5
    6
    7
    
    public class APKBroadcastReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context? context, Intent? intent)
        {
            Toast.MakeText(context, "APK安装...", ToastLength.Long)?.Show();
        }
    }
    

    在类MainActivity的重写OnCreate方法中添加如下代码。

    1
    2
    3
    4
    5
    6
    7
    8
    
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.AddAction(Intent.ActionPackageAdded);
    intentFilter.AddAction(Intent.ActionPackageRemoved);
    intentFilter.AddAction(Intent.ActionPackageReplaced);
    intentFilter.AddAction(Intent.ActionPackageInstall);
    intentFilter.AddDataScheme("package");
    APKBroadcastReceiver apkBroadcastReceiver = new APKBroadcastReceiver();
    RegisterReceiver(apkBroadcastReceiver, intentFilter);
    
Built with Hugo
Theme Stack designed by Jimmy