2011-08-26 68 views
2

我想創建一個broadcastreceiver來偵聽android.intent.action.MEDIA_BUTTON,並從中獲取extra_key_event,並相應地採取行動。不知何故,接受動作不執行。android broadcastreceviver onreceive action not performed

在我的清單:

receiver android:name="MediaButtonReceiver" 
intent-filter 
action android:name="android.intent.action.MEDIA_BUTTON" 
intent-filter 

接收機

在我的廣播接收器:

public class MVCS extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { 
     /* handle media button intent here by reading contents */ 
     /* of EXTRA_KEY_EVENT to know which key was pressed */ 

     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
      Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

然而,當我按下音量向下鍵不顯示任何內容。

任何幫助將不勝感激!

回答

0

您需要在您的活動中使用registerReceiver()方法註冊您的廣播接收器。 當你的代碼是不是在這裏完成,我不能告訴你到底如何,但請記住,您的實例MVCS下課後,你應該註冊,如:

MyActivity.registerReceiver(myBroadcastReceiver,MediaButtonReceiver);

這樣做的更好方法是將您的接收器註冊到您的活動的OnStart()中,並將其註銷到OnStop()中。

+0

感謝您的幫助。即使我的活動沒有運行,廣播接收者是否仍然像服務一樣在後臺運行? – kevdliu

+0

廣播接收器不像服務,沒有任何東西可以持續運行,只是你附加到某個事件的監聽器,就是這樣。只有當事件被解僱時,它纔會執行,並且記住響應不是那麼快,有時需要300或400mS直到聽衆被解僱。 – ruhalde

相關問題