1.創建一個應用程序,點擊按鈕實現發送廣播。收到廣播后在logcat中顯示“智能終端開發課程在學銀在線開課啦”。
運行效果如圖所示:
activity_gb.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/loading"> <Button android:text="發送廣播消息" android:layout_marginTop="@android:dimen/app_icon_size" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:onClick="send"/> </LinearLayout>
GBActivity.java
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; public class GBActivity extends AppCompatActivity { protected MyReceiver receiver; protected IntentFilter intentFilter; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gb); receiver = new MyReceiver(); intentFilter = new IntentFilter(); intentFilter.addAction("zy_send"); registerReceiver(receiver,intentFilter); } public void send(View view){ Intent intent = new Intent(); //定義廣播事件類型 intent.setAction("zy_send"); //發送廣播 sendBroadcast(intent); } protected void onDestroy(){ super.onDestroy(); unregisterReceiver(receiver); } }
MyReceiver.java
package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyReceiver","智能終端開發課程在學銀在線開課啦"); } }
2.創建三個廣播接收者1、2、3,並在注冊時設置廣播接收者的優先級,實現有序廣播,要求按照3、2、1的順序接受廣播消息,在logcat中按接受順序顯示廣播接收者的名稱。
activity_gb.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/loading"> <Button android:text="發送有序廣播信息" android:layout_marginTop="@android:dimen/app_icon_size" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:onClick="send"/> </LinearLayout>
GBActivity.java
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; public class GBActivity extends AppCompatActivity { protected MyReceiver receiver; protected MyReceiver2 receiver2; protected MyReceiver3 receiver3; protected IntentFilter intentFilter; protected IntentFilter intentFilter2; protected IntentFilter intentFilter3; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gb); receiver = new MyReceiver(); intentFilter = new IntentFilter(); intentFilter.addAction("zy_send"); intentFilter.setPriority(200); receiver2 = new MyReceiver2(); intentFilter2 = new IntentFilter(); intentFilter2.addAction("zy_send"); intentFilter2.setPriority(300); receiver3 = new MyReceiver3(); intentFilter3 = new IntentFilter(); intentFilter3.addAction("zy_send"); intentFilter3.setPriority(400); registerReceiver(receiver3,intentFilter3); registerReceiver(receiver2,intentFilter2); registerReceiver(receiver,intentFilter); } public void send(View view){ Intent intent = new Intent(); //定義廣播事件類型 intent.setAction("zy_send"); //發送廣播 sendOrderedBroadcast(intent,null); } protected void onDestroy(){ super.onDestroy(); unregisterReceiver(receiver); } }
MyReceiver.java
package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyReceiver","智能終端開發課程在學銀在線開課啦1"); } }
MyReceiver2.java
package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver2 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyReceiver2","智能終端開發課程在學銀在線開課啦2"); } }
MyReceiver3.java
package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver3 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("MyReceiver3","智能終端開發課程在學銀在線開課啦3"); } }