1、發送廣播代碼
1 package com.example.alame; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.content.Intent; 6 import android.view.View; 7 8 public class MainActivity extends Activity { 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 } 15 16 public void click(View view){ 17 Intent intent = new Intent(); 18 intent.setAction("com.exemple.oooxxx"); 19 //發送一條無序的廣播;如果是無序的廣播,則所有的廣播接收者都能夠接收到這個廣播事件 20 //sendBroadcast(intent); 21 //如果廣播是有序的發送出去,則廣播接受者按優先級來接收廣播事件;有序廣播特點:高優先級的廣播接收者可以終止掉廣播事件 22 //sendOrderedBroadcast(intent, null); 23 //這種方式的FinalBroadcast廣播接受者無論如何都會接收到廣播 24 sendOrderedBroadcast(intent, null, new FinalBroadcast(), null, 0, null, null); 25 } 26 }
2、FinalBroadcast是無需在清單文件中進行配置的,並且無論如何都會接收到廣播
1 package com.example.alame; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 7 public class FinalBroadcast extends BroadcastReceiver { 8 9 @Override 10 public void onReceive(Context context, Intent intent) { 11 // TODO Auto-generated method stub 12 System.out.println("我是最后接收者"); 13 } 14 15 }
3、測試接收自定義廣播事件代碼
1)清單文件
1 <receiver android:name=".MyBroadcastReceiver"> 2 <intent-filter android:priority="1000"> 3 <action android:name="com.exemple.oooxxx"/> 4 </intent-filter> 5 </receiver> 6 <receiver android:name=".MyBroadcastReceiver2"> 7 <intent-filter android:priority="500"> 8 <action android:name="com.exemple.oooxxx"/> 9 </intent-filter> 10 </receiver> 11 <receiver android:name=".MyBroadcastReceiver3"> 12 <intent-filter android:priority="100"> 13 <action android:name="com.exemple.oooxxx"/> 14 </intent-filter> 15 </receiver>
在清單文件中設置了優先級
2)廣播接收者代碼
1 package com.example.module3g; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.widget.Toast; 7 8 public class MyBroadcastReceiver extends BroadcastReceiver { 9 10 @Override 11 public void onReceive(Context context, Intent intent) { 12 // TODO Auto-generated method stub 13 System.out.println("receriver 1"); 14 Toast.makeText(context, "接收到頻道", 0).show(); 15 //該函數會終止掉廣播,造成低優先級的廣播接受者接收不到廣播 16 //abortBroadcast(); 17 } 18 19 }
1 package com.example.module3g; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.widget.Toast; 7 8 public class MyBroadcastReceiver2 extends BroadcastReceiver { 9 10 @Override 11 public void onReceive(Context context, Intent intent) { 12 // TODO Auto-generated method stub 13 System.out.println("receriver 2"); 14 Toast.makeText(context, "接收到頻道2", 0).show(); 15 } 16 17 }
1 package com.example.module3g; 2 3 import android.content.BroadcastReceiver; 4 import android.content.Context; 5 import android.content.Intent; 6 import android.widget.Toast; 7 8 public class MyBroadcastReceiver3 extends BroadcastReceiver { 9 10 @Override 11 public void onReceive(Context context, Intent intent) { 12 // TODO Auto-generated method stub 13 System.out.println("receriver 3"); 14 Toast.makeText(context, "接收到頻道3", 0).show(); 15 } 16 17 }