package com.lidaochen.test001; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // 点击按钮发送有序广播 发大米 public void click(View v) { Intent intent = new Intent(); intent.setAction("com.lidaochen.sendrice"); /* * intent 意图 * * receiverPermission 接收的权限 * * resultReceiver 最终的receiver * * scheduler handler * * initialCode 初始码 * initialData 初始化数据 */ sendOrderedBroadcast(intent, null, new FinalReceiver(), null, 1, "习大大给每个农民发了1000斤大米", null); } }
package com.lidaochen.test001; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class FinalReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取发送广播携带的数据 String content = getResultData(); // 显示结果 Toast.makeText(context, "报告习大大:" + content, Toast.LENGTH_SHORT).show(); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.lidaochen.test002"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ProvienceReceiver" android:enabled="true" android:exported="true"> <!--这里需要设置优先级 优先级越高 越早收到广播--> <intent-filter android:priority="1000"> <action android:name="com.lidaochen.sendrice"></action> </intent-filter> </receiver> <receiver android:name=".CityReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="500"> <action android:name="com.lidaochen.sendrice"></action> </intent-filter> </receiver> <receiver android:name=".CountryReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="100"> <action android:name="com.lidaochen.sendrice"></action> </intent-filter> </receiver> <receiver android:name=".NongMinReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="-100"> <action android:name="com.lidaochen.sendrice"></action> </intent-filter> </receiver> </application> </manifest>
package com.lidaochen.test002; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class ProvienceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取广播发送的数据 String content = getResultData(); // 显示结果 Toast.makeText(context, "省:" + content, Toast.LENGTH_SHORT).show(); // 终止广播 这里终止了广播 后面的广播接收者都收不到了 // abortBroadcast(); // 修改数据 setResultData("习大大给每个农民发了500斤大米!"); } }
package com.lidaochen.test002; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class CityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取发送广播携带的数据 String content = getResultData(); // 显示结果 Toast.makeText(context, "市:" + content, Toast.LENGTH_SHORT).show(); // 修改数据 setResultData("习大大给每个农民发了200斤大米!"); } }
package com.lidaochen.test002; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class CountryReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取发送广播携带的数据 String content = getResultData(); // 显示结果 Toast.makeText(context, "乡:" + content, Toast.LENGTH_SHORT).show(); // 修改数据 setResultData("习大大给每个农民发了10斤大米!"); } }
package com.lidaochen.test002; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class NongMinReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取发送广播携带的数据 String content = getResultData(); // 显示结果 Toast.makeText(context, "农民:" + content, Toast.LENGTH_SHORT).show(); } }