2.系统级的广播,调用一样,只是需要在AndroidMainfest.xml文件中去注册这个广播,并且添加系统级过滤条件。
3.广播也可以在代码中注册,但需要注意的是注册的同时不要忘记去注销这个广播:
一般是在Activity.onResume中去注册这个广播:
IntentFilter filter = new IntentFilter();
BroadcastReceiver receiver = new BroadcastReceiver();
registerBroadcast(receiver,filter);
一般是在Activity.onPause中去注销这个广播
unRegisterBroadcast(receiver);
另外广播尽量在代码中注册与销毁,这样可以节省设备电池的使用,如果注册在AndroidMainfest.xml中,则这个广播一直存在,且不便于管理,耗电。
package com.king.android.controls;
import com.king.android.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 描述:发起广播实例
* * 作者:Andy.Liu
* 时间: 2012-7-18 下午11:57:20
**/
public class BroadCastReceiverActivity extends Activity {
public static final String MY_BROADCAST ="com.king.android.MY_BROADCAST";
public static final String MY_WORD ="myword";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnSend = (Button) findViewById(R.id.btn_voice);
btnSend.setText("发广播");
btnSend.setVisibility(View.VISIBLE);
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(MY_BROADCAST);
intent.putExtra(MY_WORD, "my name is kobe");
sendBroadcast(intent);
}
});
}
}
package com.king.android.controls;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* 描述:接收广播
* 作者:Andy.Liu
* 时间: 2012-7-18 下午11:58:14
**/
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String msg = intent.getStringExtra(BroadCastReceiverActivity.MY_WORD);
Toast.makeText(context, "已经接收广播了============="+msg,Toast.LENGTH_LONG).show();
}
}