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

如何从Intent中提取第一个参数?附Android广播代码示例

如何从BroadcastReceiver的Intent中提取第一个参数(Action)

首先得明确:你创建Intent时用的是Intent(String action, Uri uri, Context packageContext, Class<?> cls)这个构造方法,这里的第一个参数其实就是Intent的Action(也就是你传入的BroadcastCodes.LOGIN_BROADCAST)。要拿到这个值,在onReceive方法里直接调用Intent的getAction()方法就可以了,具体实现如下:

@Override
public void onReceive(Context context, Intent intent) {
    // 提取第一个参数(即广播Action)
    String receivedAction = intent.getAction();
    
    // 强烈建议加上非空判断和匹配校验,避免处理无关广播或空指针问题
    if (receivedAction != null && receivedAction.equals(BroadcastCodes.LOGIN_BROADCAST)) {
        // 这里写你拿到Action后的业务逻辑,比如更新UI
        progressInfo.setText("已收到登录完成广播");
    }
}

额外的注意事项:

  • 注册广播接收器:你当前的代码只创建了BroadcastReceiver,但没完成注册,需要在onCreate末尾添加注册逻辑,让LocalBroadcastManager知道这个接收器要监听哪个广播:
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(BroadcastCodes.LOGIN_BROADCAST);
    localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter);
    
  • 注销接收器避免内存泄漏:在MainActivity销毁时,记得注销广播接收器,防止内存泄漏:
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (broadcastReceiver != null) {
            localBroadcastManager.unregisterReceiver(broadcastReceiver);
        }
    }
    
  • 为什么用getAction()?:因为Android的Intent会把你构造时传入的第一个Action参数存储起来,getAction()就是专门用来读取这个值的API,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者Yamur

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:14:59