android广播(内部类)使用
2024-09-18 19:02:49
1.广播定义在一个单独的文件中
源码:
- 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")){
- }
- }
- }
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中注册:
- <receiver android:name=".MessageReceiver">
- <intent-filter>
- <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
- </intent-filter>
- </receiver>
<receiver android:name=".MessageReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
使用代码注册:
- //生成广播处理
- MessageReceiver smsBroadCastReceiver = new MessageReceiver ();
- //实例化过滤器并设置要过滤的广播
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
- //注册广播
- this.registerReceiver(smsBroadCastReceiver, intentFilter);
//生成广播处理
MessageReceiver smsBroadCastReceiver = new MessageReceiver ();
//实例化过滤器并设置要过滤的广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED"); //注册广播
this.registerReceiver(smsBroadCastReceiver, intentFilter);
注销广播:
- unregisterReceiver(smsBroadCastReceiver);
unregisterReceiver(smsBroadCastReceiver);
2.广播是内部类
- 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");
- }
- }
- }
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中注册:
- <receiver android:name=".SettingForSMS$MessageChangeReceiver">
- <intent-filter>
- <action android:name="com.ginwave.message_changed"/>
- </intent-filter>
- </receiver>
<receiver android:name=".SettingForSMS$MessageChangeReceiver">
<intent-filter>
<action android:name="com.ginwave.message_changed"/>
</intent-filter>
</receiver>
注意内部类使用$符号而不是.,使用.会出现类找不到异常
在程序内注册,register是放在onCreate中,unregister是放在onDestroy中。
- smsBroadCastReceiver = new MessageChangeReceiver ();
- //实例化过滤器并设置要过滤的广播
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction("com.ginwave.message_changed");
- //注册广播
- this.registerReceiver(smsBroadCastReceiver, intentFilter);
smsBroadCastReceiver = new MessageChangeReceiver ();
//实例化过滤器并设置要过滤的广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.ginwave.message_changed"); //注册广播
this.registerReceiver(smsBroadCastReceiver, intentFilter);
- unregisterReceiver(smsBroadCastReceiver);
unregisterReceiver(smsBroadCastReceiver);
希望以后使用的时候方便点~~
最新文章
- SecureCRT使用技巧
- 遍历collection
- 【bzoj2705】 SDOI2012—Longge的问题
- MVVM了解
- apidoc,一个相当不错的文档生成器
- 解决黑苹果与windows时区不一致
- 创业草堂之二十二:创业公司C类官员的职位说明书
- 带格式导出数据到Excel
- Memcached帮助类
- Oracle主键异常处理
- Xamarin.Forms+Prism(1)—— 开发准备
- Actifio如何保护和管理Oracle-带外篇
- JDK安装教程
- c++: internal compiler error: Killed
- springboot 初始化 web 项目 启动报错。。。一直解决不了
- PHP 多态理解
- C语言:传值,传地址
- 在ASP.NET Web API中使用OData的Action和Function
- Java 注解的概念与种类
- New Concept English Two 15 37
热门文章
- 学习ML.NET(1): 构建流水线
- hover设定触发时间间隔
- 非post请求时整个url作为参数传递出现bug
- iOS Runloop理解
- Golang 数组、切片、映射
- C++Primer中for(auto it=s.cbegin(); iter!=s.cend() &;&; !it->;empty(); ++it){ cout<;<;*it<;<;endl; }有错误
- TimeLine CSS/Javascript 时间线
- 常用的查询DOM的方法
- 【转帖】intel 2018年1 月2号爆出漏洞分析 知乎匿名用户
- parent()、parents()和parentsUntil()的区别