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"); } }