android广播(内部类)使用

本文转自于:http://blog.csdn.net/xiaoxiaobian3310903/article/details/8472090

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

java类:

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")){  
          
        }  
    }  
}  
AndroidManifest.xml注册:

<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);

==========================================================================
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,不然会找不到
AndroidManifest.xml注册:
<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);



posted @ 2016-05-11 09:32  稻香鱼  阅读(300)  评论(0)    收藏  举报