您的位置:首页 > 移动开发 > Android开发

android广播(内部类)使用

2014-05-26 13:46 459 查看
1.广播定义在一个单独的文件中

源码:

[java] view
plaincopy

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中注册:

[html] view
plaincopy

<receiver android:name=".MessageReceiver">  

            <intent-filter>  

                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  

            </intent-filter>  

</receiver>  

使用代码注册:

[java] view
plaincopy

//生成广播处理    

MessageReceiver  smsBroadCastReceiver = new MessageReceiver ();    

//实例化过滤器并设置要过滤的广播    

IntentFilter intentFilter = new IntentFilter();    

intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");    

    

//注册广播    

this.registerReceiver(smsBroadCastReceiver, intentFilter);    

注销广播:

[java] view
plaincopy

unregisterReceiver(smsBroadCastReceiver);  

2.广播是内部类

[java] view
plaincopy

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中注册:

[html] view
plaincopy

<receiver android:name=".SettingForSMS$MessageChangeReceiver">  

            <intent-filter>  

                <action android:name="com.ginwave.message_changed"/>  

            </intent-filter>  

</receiver>  

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

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

[java] view
plaincopy

smsBroadCastReceiver = new MessageChangeReceiver ();    

        //实例化过滤器并设置要过滤的广播    

        IntentFilter intentFilter = new IntentFilter();    

        intentFilter.addAction("com.ginwave.message_changed");    

            

        //注册广播    

        this.registerReceiver(smsBroadCastReceiver, intentFilter);   

[java] view
plaincopy

unregisterReceiver(smsBroadCastReceiver);  

希望以后使用的时候方便点~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: