专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:55:44       共计:3642 浏览
前言:之前写过接收系统开机广播的内容,做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);
            }
 
 
        }
    }



版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:Xamarin Android移动开发蓝牙打印编码报错(android 下面提示 Encoding 936 data could not be found.) | ·下一条:Android 实现钉钉自动打卡功能

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有