Xamarin.Android App接收其他App的广播及其参数

前言:之前写过接收系统开机广播的内容,做Xamarin很多时候对于平台下的内容都是不求甚解。

这次接收的是第三方App的广播,查了一下广播相关的东西。

广播分为静态和动态的,接收系统开机广播用的是静态注册的,也只能静态的,因为App还没启动,肯定动态调不起来啊。

 

1. 接收到第三方app的广播。

我抄了下接收开机广播的方法, 结果第三方app广播后,我这边就报错。

静态注册是在AndroidManifest.xml里面application节点下写一下内容,通过action android:name来匹配对应的广播。

Java.lang.RuntimeException: Unable to instantiate receiver “”         didn't find class on path dexpathlist

其实能报错,说明广播被触发了,action名称配置什么的应该都对,但是问题在哪还是不知道,后面查资料说是有可能是因为注册的顺序问题,于是改成动态注册。

在MainActivity启动后用代码注册receiver,  就可以正常接收到了。

2. 接收广播参数 

一个receiver可以接收多个多个广播内容,通过intent.Action来判断是哪个广播,对应获取参数。

需要根据参数的类型调用不同的方法来获取

获取整数参数的方法intent.GetIntExtra(参数名称,默认值),, 文本intent.GetStringExtra(参数名称)等等。

    [BroadcastReceiver(Enabled = true, Exported = true)]
    public class BootReceiver1 : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            var action = intent.Action;
 
 
            //开启定时开关机 :参数 mode ==someday/week/everyday   offTime    onTime
            // int EVERYDAY = 1;
            //int SOMEDAY = 2;
            // int WEEK = 3;
            if (action == "xxxx.action.ACTION_POWER_ON_OFF")
            {
                var mode = intent.GetIntExtra("mode", -1);
                var offTime = intent.GetLongExtra("offTime", -1);
                var onTime = intent.GetLongExtra("onTime", -1);
 
                System.DateTime offDateTime = XamarinApp.StandardLib.TimeHelper.UnixMil2DateTime(offTime);
                System.DateTime onDateTime = XamarinApp.StandardLib.TimeHelper.UnixMil2DateTime(onTime);
                //保存到缓存。
                HcData.HcConfig.PowerOnOffMode = mode;
 
            }
            //取消定时开关机
            if (action == "xxx.action.ACTION_CANCEL_POWER_ON_OFF")
            {
                HcData.HcSerialPortMgr.SetPowerOnOff(-1, -1);
            }


        }
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值