如何从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
相关产品推荐
相关产品推荐

