BroadcastReceiver 解說版
infor from http://givemepass.blogspot.tw/2011/12/broadcastreceiver.html
通常廣播是用來通知系統,有某些系統資訊已經完成了,
廣播會流通在系統內,很多程式都會接收到廣播,
但就很像學校裡會用廣播通知某某某到訓導處,
很多同學或老師都會聽到,但是會去訓導處的只有某某某。
首先定義一個Button,它是用來送出一個廣播訊息,
當接收廣播的程式收到以後,就會跳出一個視窗顯示我收到了。
但就很像學校裡會用廣播通知某某某到訓導處,
很多同學或老師都會聽到,但是會去訓導處的只有某某某。
首先定義一個Button,它是用來送出一個廣播訊息,
當接收廣播的程式收到以後,就會跳出一個視窗顯示我收到了。
package com.givemepass.broadcastrecevierdemo;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BroadcastReceiverDemoActivity extends Activity {
private final static String MY_MESSAGE = "com.givemepass.sendmessage";
private Button send_broadcast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
send_broadcast = (Button)findViewById(R.id.send_broadcast);
send_broadcast.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
registerReceiver(mBroadcast, new IntentFilter(MY_MESSAGE));
Intent intent = new Intent();
intent.setAction(MY_MESSAGE);
sendBroadcast(intent);
}
});
}
private BroadcastReceiver mBroadcast = new BroadcastReceiver() {
private final static String MY_MESSAGE = "com.givemepass.sendmessage";
@Override
public void onReceive(Context mContext, Intent mIntent) {
if(MY_MESSAGE.equals(mIntent.getAction())){
new AlertDialog.Builder(BroadcastReceiverDemoActivity.this)
.setMessage("收到訊息!")
.setPositiveButton("確定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
unregisterReceiver(mBroadcast);
}
})
.show();
}
}
};
}
當我們按下button的時候,
就對系統註冊我們下面所寫的廣播類別,
registerReceiver(mBroadcast, new IntentFilter(MY_MESSAGE));
這個廣播類別是專門接收傳送出來的各類訊息,
而我們篩選出MY_MESSAGE裡面的字串,if(MY_MESSAGE.equals(mIntent.getAction())){
...
}
當我們截取到這樣的字串, 就會跳出一個視窗顯示我們收到了!
接著就將廣播的物件解除註冊。new AlertDialog.Builder(BroadcastReceiverDemoActivity.this)
.setMessage("收到訊息!")
.setPositiveButton("確定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
unregisterReceiver(mBroadcast);
}
})
.show();
沒有留言:
張貼留言