2012-06-06 105 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);