对于activity我们已经有了一定的了解了,但对于安卓的四大组件之一的Broadcast我们似乎没接触过。其实每天我们都在和它打交道,还记得这张图片吗?
每当没网时,我们有没有想过手机怎么知道没网了呢?这一切等了解Braoadcast后,你就会明白了。
安卓有一套完整的API,可以让用户自由接收和发送广播。接收广播需要广播接收器,而发送广播需要使用intent。Intent在前面我们已经接触过了,就不详细介绍了,待会直接看代码。那么就来看看广播接收器了。
广播接收器怎么用呢?怎么创建一个广播接收器呢?其实很简单。
1.动态注册监听网络的变化
新建一个内部类NetworkChangeReceiver,并继承BroadcastReceiver。代码如下:
public class MainActivity extends Activity { private NetworkChangeReceiver networkChangeReceiver; private IntentFilter intentFilter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); networkChangeReceiver = new NetworkChangeReceiver();//创建广播接收器实例 registerReceiver(networkChangeReceiver, intentFilter);//注册网络监听广播 findViewById(R.id.send).setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View arg0) { Intent intent=new Intent("android.app.action.ACTION_PASSWORD_FAILED"); sendBroadcast(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) { Toast.makeText(context, "network is available", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show(); } } } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(networkChangeReceiver);//注销此网络监听广播 } }
动态注册需要在onCreate方法中动态注册,并且要在onDestroy方法中销毁。当网络链接情况改变时,监听端口就会收到对应广播信号,onReceive方法就会调用。网络链接情况的改变是由安卓系统监控的,因此我们只要在程序中对它监听了,网络链接情况的改变时,系统就会发送广播,监听他的程序就会收到广播。
是不是有了上述代码,程序就可以正常运行了呢?答案是否定的。这涉及到一个权限问题,程序要访问系统的网络状况,必须要有权限注册代码,下面这是访问网络的权限代码,要在AndroidManifest.xml中添加这一行
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
2、静态注册
静态注册时,我们要创建一个类BootCompleteReceiver继承BroadcastReceiver,并重写onReceive方法,除此之外,我们还要在AndroidManifest.xml中注册
<receiver android:name="com.example.learningtest1_broadcast.BootCompleteReceiver" > <intent-filter > <action android:name="android.app.action.ACTION_PASSWORD_FAILED"/> </intent-filter> </receiver>
这样,也可以监听接收对应的广播。
相关推荐
文档主要是讲Android开发的四大组件详解,包含 Activity详解 ,Service详解,Broadcast Receiver详解,Content Provider详解 外加一个重要组件 intent的详解。 文章内容来自网络,本文是一个总结性文章。
安卓四大组件——BroadcastReceiver(广播)
android 四大组件初学者必备,activity services等等
简要解释一下activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver
学习Android的四大组件之一Broadcast时的练习!
文章目录Android四大组件之Broadcast Receiver概述广播接收器(Broadcast Receiver)Broadcast Receiver简介Broadcast Receiver的注册一. 静态注册二. 动态注册三. 本地广播发送Broadcast Receiver广播的三种发送...
Android安全开发基础--4--四大组件之广播(Broadcast Receiver).pdf Android安全开发基础--5--四大组件之内容提供器(Content Provider).pdf Android安全开发基础--6--进程间通信机制(IPC).pdf Android安全开发...
BroadcastBestPractice:安卓利用广播的一个学习程序,程序源自《第一行代码》 android。程序中为练习安卓四大组件之一的BroadCast
Intent是信使,负责完成Android四大组件之间的信息传递,同类、不同类的组件无法直接传递对象,一旦需要沟通只能通过Intent(不建议通过静态变量或静态方法传递数据,容易造成数据异常、内存泄露等问题)。...
介绍了andorid四大组件之一的BroadcastReceiver
Android四大组件之ServiceService的生命周期被启动(startService)的服务的生命周期:被绑定(bindService)的服务的生命周期:被启动又被绑定的服务的生命周期:实例布局创建Service类启动ServiceDemo下载 android开发...
然而,它们可以启动一个activity或serice 来响应它们收到的信息,或者用NotificationManager 来通知用户。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久...
一个关于Android四大组件Broadcast Receiver的小demo
Intent Filter就是用来注册 Activity 、Service 、 Broadcast、Receiver(四大组件) 具有能在某种数据上执行一个动作的能力。使用 Intent Filter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求...
05四大组件——广播接收器broadcast receiver ├── 06UI和控件 ├── 07碎片 ├── 08数据存储 ├── 09多媒体技术 ├── 10网络技术 └── 11Android特色开发 ├── android-framework -- android系统 ├─...
Android UI、常见控件和自定义控件、碎片、四大组件(Activity、Service、Broadcast和ContentProvider)、二维绘制、Canvas和Paint、多媒体开发等; 还讲解了Android开发的高级技术: Camera、地图、GPS、...
Android UI、常见控件和自定义控件、碎片、四大组件(Activity、Service、Broadcast和ContentProvider)、二维绘制、Canvas和Paint、多媒体开发等; 还讲解了Android开发的高级技术: Camera、地图、GPS、...
BroadcastReceiver(广播接收器)是Android中的四大组件之一。下面就具体介绍一下Broadcast Receiver组件的用法。 下面是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播通知信息,...
Android四大组件之一,BroadcastReceiver的实例Demo。