2012-06-06 108 views
1

我想注册一个接收器,使用java而不是清单,因为当我的应用程序关闭时,我不需要接收器。Android:无法注册BroadcastReceiver

如果我用我的清单接收工作做好:

<receiver android:name=".services.PlayerService$RemoteControlReceiver" > 
     <intent-filter> 
      <action android:name="android.intent.action.MEDIA_BUTTON" /> 
     </intent-filter> 
    </receiver> 

如果我在活动注册它没有表现,这并不在所有的工作:

IntentFilter filter = new IntentFilter(); 
    { 
     filter.addAction("android.intent.action.MEDIA_BUTTON"); 
    } 

    registerReceiver(RemoteControlReceiver, filter); 

我不不需要使用清单,因为我只想在我的应用程序打开时控制耳机按钮。

+0

是你的班真的有这个带有$符号的名字。 PlayerService $ RemoteControlReceiver –

+0

它是一个内部类 – Giuseppe

+0

检查这个SO线程它会帮助你[以编程方式注册一个广播接收器](http://stackoverflow.com/questions/4805269/programmatically-register-a-broadcast-receiver)与我共享如果仍然有麻烦。 – swiftBoy

回答

2

使用Intent.ACTION_MEDIA_BUTTON而不是android.intent.action.MEDIA_BUTTON作为;

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);  
filter.setPriority(10000);  
registerReceiver(RemoteControlReceiver, filter);