android静态注册的广播在某些手机上无法正常接收

本文讨论了在华硕和TCL等品牌手机上,自定义静态广播无法正常接收的问题,通过将自定义action与系统action放入不同intent-filter中,以及采用动态广播的方法,解决了接收冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某些手机(TCL和华硕品牌的手机)自定义静态广播无法正常接收)

  • 一般情况下我们都习惯这么写广播
public class MyTestReceiver extends BroadcastReceiver {



    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        // 具体实现
}
  • 然后在配置文件中可能做如下配置
<receiver
            android:name=".MyTestReceiver "
            android:enabled="true"
            android:exported="false" >
            <intent-filter>
                <action android:name="xxx.abc" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

然后问题就出现了:大部分手机是没问题的,这个广播可以正常运行,但是我遇到的在华硕和tcl的手机上,广播死活收不到,查了半天发现“xxx.abc”自定义的action和android系统广播”android.net.conn.CONNECTIVITY_CHANGE”action放在同一个”< intent-filter>”里面会冲突;解决办法是:
1. 把它们放到两个不同的”< intent-filter>”中
2. 另外写一个广播专门负责接收系统的广播action,经过测试,这样做之后自定义的静态广播action就能正常接收,而另一个静态广播的android系统的action貌似还是不能接收
3. 使用动态广播,经过测试上述情况如果使用动态广播的话就能正常接收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值