2013-08-06 63 views
0

這裏是什麼清單內(這是內部廣播接收器用於ACTION_MEDIA_BUTTON不起作用

<receiver android:name=".MediaButtonIntentReceiver"> 
<intent-filter android:priority="2147483647"> 
    <action android:name="android.intent.action.MEDIA_BUTTON" /> 
</intent-filter> 
     </receiver> 

主要活動

private MediaButtonIntentReceiver receiver = new MediaButtonIntentReceiver(); 

onCreate(Bundle savedInstanceState){ 
.. 
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); 
     filter.setPriority(1000); 
     registerReceiver(receiver,filter); 
.. 
} 

這是MediaButtonIntentReceiver.class

public class MediaButtonIntentReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) 


{ 

KeyEvent v_Event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); 
if (v_Event == null) { 
    return; 
} 
int v_Action = v_Event.getAction(); 
if (v_Action == KeyEvent.ACTION_DOWN) { 
// do something 
    Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
    } 
    abortBroadcast(); 
} 

對於某些原因,無論何時我啓動我的應用程序並點擊我的耳機按鈕,我都沒有收到Toast消息。音樂開始雖然玩。我試過尋找我在做什麼,但對我來說沒有運氣。

回答

0

不是100%確定它是否有所作爲,但在接收方的聲明中有'。'在函數名稱前面,任何時候我註冊了一個接收器,我沒有那個,它的工作正常。

你知道代碼得到多遠嗎BroacastReceiver?例如可以v_Event爲空?或者是v_Action絕對是KeyEvent.ACTIONDOWN

+0

那麼我已經進一步研究了這個......嘗試了不同的代碼。試圖在java部分而不是xml中創建一個意圖過濾器。沒有。我認爲這可能與優先級有關,儘管我將優先級設置爲可能的最大數目,但Apollo仍在進行中。 –

+0

看起來您在xml中聲明的優先級大於最大允許優先級,請嘗試將其降至1000,或者如果因爲它可能需要'<1000'而不工作999,而不是'<= 1000' – Cob50nm

+0

我已經在創建java文件之前刪除了XML文件中的意圖過濾器。我正在模擬器上嘗試它。我認爲我的問題是基於代碼的。 –