首页 > 代码库 > Android 广播(内部类)
Android 广播(内部类)
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")){ } }}
在Manifest中注册:
<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);
注销广播:
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"); } }}
注意定义的过程中必须声明为static,不然会找不到
在Manifest中注册:
<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);
unregisterReceiver(smsBroadCastReceiver);
注意:如果使用getResource()方法,要使用context.getResource()
Android 广播(内部类)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。