将接收器注册到无法找到的过滤器

时间:2012-03-27 13:50:49

标签: android android-intent

你可以帮我找出为什么广播接收器的注册返回null? 这是代码:

ScoIntent = new IntentFilter(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED);
                sReceiver = new ScoReceiver(context, Tmp); 
                if (context.registerReceiver(sReceiver, ScoIntent) == null) {
                    Log("FBR.GetBlueConnect:Error", "Can not find receiver ACTION_CONNECTION_STATE_CHANGED");
                    HFS.DisplayText("Can not connect to Bluetooth Headset, Please Exit", true);
                }

这是reciver:

class ScoReceiver extends BroadcastReceiver {      
    public ScoReceiver(Context mcontext, Tools t){
    bContext = mcontext;
    tools = t;
}
@Override 
public void onReceive(Context context, Intent arg1) { 
    tools.Log("ScoReceiver:onReceive", "In");

    //arg1 = new Intent(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED); 
    String action = arg1.getAction();
    tools.Log("ScoReceiver:onReceive", ">>> Bluetooth SCO state changed !!! ");
    if(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {
        int status = arg1.getIntExtra(BluetoothHeadset.EXTRA_STATE, AudioManager.SCO_AUDIO_STATE_ERROR );

}

1 个答案:

答案 0 :(得分:0)

javadocs说,

  

返回匹配filter的第一个粘性意图,如果是,则返回null   没有。

这个接收器有意图吗?这里有一篇文章讨论了一个棒和非粘性意图之间的区别,

  

what is the difference between sendStickyBroadcast and sendBroadcast in Android