作爲一個簡單的測試,我試圖讓一個broadcastReceiver通知用戶一個Toast消息,在Android中單擊了一個硬件按鈕。聽Android中的硬件按鈕單擊事件
我在我的名字.TestReceiver偵聽當用戶點擊綠色SEND鍵Action_CALL_BUTTON被告知清單文件中創建一個接收器標籤:
<receiver android:name=".TestReceiver" >
<intent-filter>
<action android:name="android.intent.action.ACTION_CALL_BUTTON" />
</intent-filter>
</receiver>
接下來,我創建了TestReceiver擴展BroadcastReceiver並創建Toast的類。 當我點擊通話按鈕時,我沒有看到Toast消息,但是我在一個活動上進行了測試並顯示。 我在這裏錯過了什麼?
package com.example.helloandroid;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class TestReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
感謝
正如我寫道:「在您的具體情況,ACTION_CALL_BUTTON不廣播意圖行動。這是一項活動意圖行動,不會被BroadcastReceivers攔截。你可以通過文檔中的「活動動作」聲明來告訴這個特定動作。「 – CommonsWare 2009-11-19 02:18:35
那麼你是說這是不可能的嗎?我想寫一個服務來接收這個動作 - 不是活動。 – 2011-05-06 15:30:18