1.广播定义在一个单独的文件中

源码:

  1. public class MessageReceiver extends BroadcastReceiver{
  2. @Override
  3. public void onReceive(Context context, Intent intent) {
  4. // TODO Auto-generated method stub
  5. if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
  6. }
  7. }
  8. }
public class MessageReceiver extends BroadcastReceiver{

	@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ }
}
}

在Manifest中注册:

  1. <receiver android:name=".MessageReceiver">
  2. <intent-filter>
  3. <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
  4. </intent-filter>
  5. </receiver>
<receiver android:name=".MessageReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

使用代码注册:

  1. //生成广播处理
  2. MessageReceiver  smsBroadCastReceiver = new MessageReceiver ();
  3. //实例化过滤器并设置要过滤的广播
  4. IntentFilter intentFilter = new IntentFilter();
  5. intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
  6. //注册广播
  7. this.registerReceiver(smsBroadCastReceiver, intentFilter);
//生成广播处理
MessageReceiver smsBroadCastReceiver = new MessageReceiver ();
//实例化过滤器并设置要过滤的广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED"); //注册广播
this.registerReceiver(smsBroadCastReceiver, intentFilter);

注销广播:

  1. unregisterReceiver(smsBroadCastReceiver);
unregisterReceiver(smsBroadCastReceiver);

2.广播是内部类

  1. public class SettingForSMS extends PreferenceActivity{
  2. @Override
  3. public void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. addPreferencesFromResource(R.layout.sms_setting);
  6. }
  7. public static class MessageChangeReceiver extends BroadcastReceiver {
  8. @Override
  9. public void onReceive(Context context, Intent intent) {
  10. // TODO Auto-generated method stub
  11. Log.i(tag, "onReceive");
  12. }
  13. }
  14. }
public class SettingForSMS extends PreferenceActivity{

	@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.layout.sms_setting);
} public static class MessageChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.i(tag, "onReceive");
}
}
}

注意定义的过程中必须声明为static,不然会找不到

在Manifest中注册:

  1. <receiver android:name=".SettingForSMS$MessageChangeReceiver">
  2. <intent-filter>
  3. <action android:name="com.ginwave.message_changed"/>
  4. </intent-filter>
  5. </receiver>
<receiver android:name=".SettingForSMS$MessageChangeReceiver">
<intent-filter>
<action android:name="com.ginwave.message_changed"/>
</intent-filter>
</receiver>

注意内部类使用$符号而不是.,使用.会出现类找不到异常

在程序内注册,register是放在onCreate中,unregister是放在onDestroy中。

  1. smsBroadCastReceiver = new MessageChangeReceiver ();
  2. //实例化过滤器并设置要过滤的广播
  3. IntentFilter intentFilter = new IntentFilter();
  4. intentFilter.addAction("com.ginwave.message_changed");
  5. //注册广播
  6. this.registerReceiver(smsBroadCastReceiver, intentFilter);
smsBroadCastReceiver = new MessageChangeReceiver ();
//实例化过滤器并设置要过滤的广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.ginwave.message_changed"); //注册广播
this.registerReceiver(smsBroadCastReceiver, intentFilter);
  1. unregisterReceiver(smsBroadCastReceiver);
unregisterReceiver(smsBroadCastReceiver);

希望以后使用的时候方便点~~

最新文章

  1. SecureCRT使用技巧
  2. 遍历collection
  3. 【bzoj2705】 SDOI2012—Longge的问题
  4. MVVM了解
  5. apidoc,一个相当不错的文档生成器
  6. 解决黑苹果与windows时区不一致
  7. 创业草堂之二十二:创业公司C类官员的职位说明书
  8. 带格式导出数据到Excel
  9. Memcached帮助类
  10. Oracle主键异常处理
  11. Xamarin.Forms+Prism(1)—— 开发准备
  12. Actifio如何保护和管理Oracle-带外篇
  13. JDK安装教程
  14. c++: internal compiler error: Killed
  15. springboot 初始化 web 项目 启动报错。。。一直解决不了
  16. PHP 多态理解
  17. C语言:传值,传地址
  18. 在ASP.NET Web API中使用OData的Action和Function
  19. Java 注解的概念与种类
  20. New Concept English Two 15 37

热门文章

  1. 学习ML.NET(1): 构建流水线
  2. hover设定触发时间间隔
  3. 非post请求时整个url作为参数传递出现bug
  4. iOS Runloop理解
  5. Golang 数组、切片、映射
  6. C++Primer中for(auto it=s.cbegin(); iter!=s.cend() &amp;&amp; !it-&gt;empty(); ++it){ cout&lt;&lt;*it&lt;&lt;endl; }有错误
  7. TimeLine CSS/Javascript 时间线
  8. 常用的查询DOM的方法
  9. 【转帖】intel 2018年1 月2号爆出漏洞分析 知乎匿名用户
  10. parent()、parents()和parentsUntil()的区别