public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //動態註冊廣播接受者,優先級高於靜態註冊 IntentFilter intentFilter = new IntentFilter("BC_One"); BC2 bc2 = new BC2(); registerReceiver(bc2,intentFilter); } public void doClick(View v){ switch (v.getId()){ case R.id.button: //普通廣播 Intent intent = new Intent(); intent.putExtra("msg","這是一條普通廣播"); intent.setAction("BC_One"); sendBroadcast(intent); break; case R.id.button2: //有序廣播 Intent intent2 = new Intent(); intent2.putExtra("msg","這是一條有序廣播"); intent2.setAction("BC_Two"); sendOrderedBroadcast(intent2,null); break; case R.id.button3: //異步廣播 能夠先發送再註冊 Intent intent3 = new Intent(); intent3.putExtra("msg","這是一條異步廣播"); intent3.setAction("BC_Three"); sendStickyBroadcast(intent3); IntentFilter intentFilter = new IntentFilter("BC_Three"); BC3 bc = new BC3(); registerReceiver(bc,intentFilter); break; default: break; } } } //配置文件 /** priority -- 優先級 * 靜態註冊 */ <receiver android:name=".BC1"> <intent-filter android:priority="100"> <action android:name="BC_One"/> </intent-filter> </receiver> <!--<receiver android:name=".BC2">--> <!--<intent-filter android:priority="200">--> <!--<action android:name="BC_One"/>--> <!--</intent-filter>--> <!--</receiver>--> <receiver android:name=".BC3"> <intent-filter android:priority="200"> <action android:name="BC_Two"/> </intent-filter> </receiver> <receiver android:name=".BC4"> <intent-filter android:priority="100"> <action android:name="BC_Two"/> </intent-filter> </receiver> //普通廣播接收 public class BC1 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String s = intent.getStringExtra("msg"); System.out.println("receive1收到的信息:"+s); } } public class BC2 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String s = intent.getStringExtra("msg"); System.out.println("receive2收到的信息:"+s); } } //有序廣播接收 public class BC3 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String s = intent.getStringExtra("msg"); System.out.println("receive3收到的信息:"+s); Bundle bundle = new Bundle(); bundle.putString("test","攔截廣播添加數據"); setResultExtras(bundle); } } public class BC4 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String s = intent.getStringExtra("msg"); System.out.println("receive4收到的信息:"+s); Bundle bundle = getResultExtras(true); String s2 = bundle.getString("test"); System.out.println("獲得的處理結果是: "+s2); } } //異步廣播接收 public class BC5 extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { System.out.println("收到異地廣播"); } }