非常實用的android動態註冊廣播併發送以及接收實例

廣播是android四大組件之一,很多情況下數據的傳遞是用過Intent發送,  跳到另外一個Activity就可以接收數據然後更新UI了,但是如果不是跳到另外一個Activity的情況下數據是怎麼傳遞的呢?就需要使用BroadcastReceiver

下面我使用動態註冊的方式來註冊廣播傳遞數據。


先寫一個廣播接收器類需要繼承BroadcastReceiver

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;


public class MyBroadcastReceiver extends BroadcastReceiver{

         //onReceive可以接收發送出去的廣播數據。
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.e("onReceive", arg1.getStringExtra("data"));
}
}


//下一個Activity類來註冊和發送廣播

import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class SendBroadcastActivity extends Activity{


private Button registbtn;
private Button sendbtn;
private MyBroadcastReceiver bcr;//上面寫的一個廣播接收類
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registbtn = (Button) findViewById(R.id.test);
sendbtn = (Button) findViewById(R.id.test3);
registbtn.setText("註冊廣播");
sendbtn.setText("發送廣播");

//動態註冊光廣播
registbtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
bcr = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("myAction");
SendBroadcastActivity.this.registerReceiver(bcr, filter);
}
});

               //開始發送廣播
sendbtn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

                               if(bcr!=null){

Intent intent = new Intent();
intent.setAction("myAction");
intent.putExtra("data", "Hi!I am broadcastData!");
SendBroadcastActivity.this.sendBroadcast(intent);
}
else{
Toast.makeText(SendBroadcastActivity.this, "請先註冊廣播", Toast.LENGTH_LONG).show();
}


});
}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章