转载请注明出处:http://blog.csdn.net/llew2011/article/details/51014743
提起BroadcastReceiver大家都很熟悉,它和Activity,Service以及ContentProvider并称为Android的四大组件(四大金刚),可见BroadcastReceiver的重要性,今天我们主要从安全的角度来讲解称为四大组件之一的BroadcastReceiver。可能有的童靴看到这里会有疑问,BroadcastReceiver有啥好讲的,不就是先定义自己的广播接收器然后在manifest.xml文件中注册,在需要发送广播的地方调用Context的sendBroadcast()方法或者是sendOrderBroadcast(),最后在我们自定义的的广播接收器的onReceive()方法中做相应逻辑么?恩,这样使用BroadcastReceiver的总体流程是非常OK的,也说明你对广播这块的使用掌握的是非常熟悉的,但今天是从安全的角度来讲解BroadcastReveiver的,我相信你阅读完本文后会有所收获(*^__^*) ……
BroadcastReceiver的使用很广泛也很简单,它的使用可以概括为三步走:
- 定义自己的BroadcastReceiver并实现onReceive()方法
- 在AndroidManifest.xml中静态注册或者在代码中动态注册
- 调用Context的sendBroadcast()方法发送广播
这里先对广播的两种注册方式做一下说明,广播注册分为动态注册和静态注册两种方式。静态注册指的是常驻型广播,无论我们的应用程序在不在运行,只要有符合条件的广播发来我们的应用程序都可以接受的到,动态注册指的是只有在我们的应用程序在运行的时候才可以接受到符合条件的广播。所以当我们要使用广播时要做一下区分:是用静态还是用动态。
按照以上步骤我们先定义自己的广播接收器CustomBroadcastReceiver,定义自己的广播接收器需要继承自BroadcastReceiver类,该类是abstract类型的,所以我们需要实现onReceive()方法,代码如下:
public class CustomBroadcastReceiver extends BroadcastReceiver {
public CustomBroadcastReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Log.e(this.getClass().getSimpleName(), "current time is :" + System.currentTimeMillis());
}
}
我们自定义的广播接收器比较简单,仅仅在onReceive()方法中打印了一句话而已。接下来我们在AndroidManifest.xml文件中配置CustomBroadcastReceiver,我们让该Receiver接受指定action的广播,代码如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.llew.seetao.a"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity android:name="com.llew.seetao.a.MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.llew.seetao.a.CustomBroadcastReceiver">
<intent-filter>
<action android:name="com.llew.seetao.customaction"/>
</intent-filter>
&l