發送廣播html
/** * 小喇叭發出數據已經跟新的廣播 */ private void broadcastCircleViewUpdate() { //建立 Intent Intent testIntent = new Intent(); //設置 動做屬性 testIntent.setAction(Action.ACTION_CIRCLE_MSG_UPDATE); //設置消息內容 testIntent.putExtra("MSG", "Test!!!!"); //發送廣播 getBaseContext().sendBroadcast(testIntent); }
接受廣播java
【1】先寫一個廣播監聽對象: receiver
android
private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { //講廣播中收到的intent的屬性取出來 String action = intent.getAction(); //使用if-else if 進行哦匹配;注意不要使用switch if (action.equals(BroadCastAction.NEW_POST_ACTION)) { //添加須要執行的動做 ... ... } else if (action.equals(BroadCastAction.NEW_POST_SUCCESS_ACTION)) { //添加須要執行的動做 ... ... } else if (action.equals(BroadCastAction.NEW_POST_FAIL_ACTION)) { //添加須要執行的動做 ... ... } else if (action.equals(Action.ACTION_CIRCLE_MSG_UPDATE)) { //添加須要執行的動做 String msg = intent.getStringExtra("MSG"); ... ... } else if (action.equals(Action.ACTION_CIRCLE_HOME_UPDATE)) { //添加須要執行的動做 ... ... } else if (action.equals(Action.ACTION_CIRCLE_PERSONAL_UPDATE)) { //添加須要執行的動做 ... ... } } };
【2】集中註冊全部的監聽
ide
/** * 集中註冊監聽 */ private void registRecivers() { IntentFilter filter = new IntentFilter(); filter.addAction(BroadCastAction.NEW_POST_ACTION); filter.addAction(BroadCastAction.NEW_POST_SUCCESS_ACTION); filter.addAction(BroadCastAction.NEW_POST_FAIL_ACTION); filter.addAction(Action.ACTION_CIRCLE_MSG_UPDATE); filter.addAction(Action.ACTION_CIRCLE_HOME_UPDATE); filter.addAction(Action.ACTION_CIRCLE_PERSONAL_UPDATE); //註冊走起:參數1爲receiver,參數2爲intent過濾器 registerReceiver(receiver, filter); }
【3】廣播的註冊與卸載code
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_firend_circle); ... ... // 在Activity中onCreate()中集中註冊 registRecivers(); } @Override protected void onDestroy() { super.onDestroy(); // 注意必定要卸載,否則運行會報錯 unregisterReceiver(receiver); }
好東西老是在最後!!!xml
BroadcastReciver須要能匹配的intent,共有2種方式htm
【1】使用代碼進行制定,以下對象
private void registRecivers() { IntentFilter filter = new IntentFilter(); filter.addAction(BroadCastAction.NEW_POST_ACTION); filter.addAction(BroadCastAction.NEW_POST_SUCCESS_ACTION); filter.addAction(BroadCastAction.NEW_POST_FAIL_ACTION); filter.addAction(Action.ACTION_CIRCLE_MSG_UPDATE); filter.addAction(Action.ACTION_CIRCLE_HOME_UPDATE); filter.addAction(Action.ACTION_CIRCLE_PERSONAL_UPDATE); //註冊走起:參數1爲receiver,參數2爲intent過濾器 registerReceiver(receiver, filter); }
【2】在AndroidManifest.xml文件中進行配置ip
<receiver android:name="com.zte.moa.receiver.SipBroadcastReceiver" > <intent-filter> <action android:name="com.zte.moa.call_action.org.doubango.ngn.services.impl.NgnHttpClientService" /> </intent-filter> </receiver>
這裏有個坑!!!用sipBroadcastReceiver.java來舉個例子ci
使用方式【2】的話是有條件的:sipBroadcastReceiver.java 必須存在這個類
必定必定!!!!不能在Activity中寫成內部類sipBroadcastReceiver,這樣會報錯!!!
網上看到已經有哥麼掉坑裏去過了: