我正在尝试下一个代码。
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");
我的问题是,当手机刚刚启动时尝试该方法时,headsetState的Intent值为NULL,应用程序关闭。但是,如果我已将耳机插入/拔出手机,该应用程序似乎正常工作,则耳机状态具有值。
我的问题是为什么这个“Intent”最初是NULL,应该有一个值,没有?
感谢您的建议。
答案 0 :(得分:0)
从documentation,registerReceiver
返回
“找到匹配过滤器的第一个粘性意图,如果没有,则返回null。”
由于未找到粘性意图,因此返回null。你没有正确使用它。返回值旨在帮助您捕获在注册接收器之前到达的任何粘性广播,并且注册的接收者(您未提供)将处理onReceive()
中的未来事件。