用途是接收系統中的broadcast訊息
一般來說可以寫在AndroidManifest.xml中即可
但是有些系統預設的broadcast訊息必須動態的跟系統註冊broadcastReceiver才能接收
例如screen on, screen off等等
以下就是一個可接受screen on, screen off的broadcastReceiver範例
1. 建立intent filter並設定其內容, 此例中可接收之intent為
"android.intent.action.SCREEN_ON"和"android.intent.action.SCREEN_OFF"
至於BroadcastReceiver的class宣告在下面第2點有說明
最後用registerReceiver(receiver, filter)向系統註冊此broadcastReceiver
public void onCreate()
{
// code
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.SCREEN_ON");
filter.addAction("android.intent.action.SCREEN_OFF");
ScreenReceiver receiver = new ScreenReceiver();
registerReceiver(receiver, filter);
}
2. 建立一個inner class繼承broadcastReceiver, 並override onReceive()方法
藉由intent.getAction()取得接收到的intent即可進行對應的動作
public class ScreenReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if(intent.getAction().equals("android.intent.action.SCREEN_ON"))
{
// code
}
else if(intent.getAction().equals("android.intent.action.SCREEN_OFF"))
{
// code
}
}
}
沒有留言:
張貼留言