Android四大组件之一——Broadcast Receiver

来源:互联网 发布:大众软件电子版 pdf 编辑:程序博客网 时间:2024/06/01 09:39

:###广播接收器:可以响应和监听系统事件,也可手动启动


①简单手动启动代码:
(1)MyReceiver:

public class MyReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String msg = intent.getStringExtra("msg");        Toast.makeText(context, msg, 1111).show();    }}

(2)AndroidManifest.xml(注册广播接收器与注册Activity异曲同工)

<receiver android:name="broadcast_recevier1.MyReceiver" ></receiver>

(3)MainActivity:

public class MainActivity extends Activity {    private Button btn;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn = (Button) findViewById(R.id.button1);        btn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Intent i = new Intent();                i.setClass(MainActivity.this, MyReceiver.class);                i.putExtra("msg", "发送给广播接收器的信息");                sendBroadcast(i);                //发送intent到广播接收器            }        });    }}

②系统广播事件(自动):
(1)MyAutoReciver:

public class MyAutoRecevier extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        Toast.makeText(context, "自动广播已运行", 1111).show();        Log.i("po", "自动广播已运行");    }}

(2)AndroidManifest.xml(注意与第一种广播的注册方式的不同,关于intent-filter的使用后面再做详细的介绍):

<receiver android:name="broadcast_recevier1.MyAutoRecevier" >        <intent-filter>            <action android:name="android.intent.action.BOOT_COMPLETED" />        </intent-filter></receiver>

以上代码是系统启动时广播就可以执行,但是我在测试的时候结果不理想。


intent-filter:

Intent过滤器:以我的理解来看,手机发生的所有action(动作)都有对应的常量值,例如android.intent.action.BOOT_COMPLETED是系统启动完成的action常量值。当符合intent-filter中设置的action的常量值,则就执行相应的广播。

一些标准广播Action常量:

            常量值                                      意义 android.intent.action.BOOT_COMPLETED                系统启动 android.intent.action.ACTION_TIME_CHANGED           时间改变 android.intent.action.ACTION_DATE_CHANGED           日期改变        android.intent.action.ACTION_TIMEZONE_CHANGED       时区改变     android.intent.action.ACTION_BATTERY_LOW            电量低 android.intent.action.ACTION_MEDIA_EJECT        插入或拔出外部媒体 android.intent.action.ACTION_MEDIA_BUTTON          按下多媒体键 android.intent.action.ACTION_PACKAGE_ADDED          添加包 android.intent.action.ACTION_PACKAGE_REMOVED        删除包
0 0
原创粉丝点击