0

我正在尝试下一个代码。

IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent headsetState = MainActivity.this.registerReceiver(null, filter);
int state = headsetState.getIntExtra("state", -1);
String name = headsetState.getStringExtra("name");

我的问题是当我在手机刚启动时尝试该方法时,耳机状态的Intent值为NULL,并且应用程序关闭。但是,如果我在手机上插入/拔出耳机,该应用程序似乎可以工作,耳机状态有一个值。

我的问题是为什么这个“意图”一开始是空的,应该有一个值,不是吗?

感谢您的建议。

4

1 回答 1

0

文档中,registerReceiver返回

“找到与过滤器匹配的第一个粘性意图,如果没有,则返回 null。”

由于没有找到粘性意图,因此它返回 null。你没有正确使用它。返回值旨在帮助您捕获在您注册接收器之前到达的任何粘性广播,并且注册的接收器(您没有提供)将处理onReceive().

于 2013-04-11T20:01:20.160 回答