专高1第12单元

BroadCastReceiver

什么是BroadCastReceiver

第一步:新建一个类继承BroadcastReceiver

public class SdCardBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if(“android.intent.action.MEDIA_MOUNTED”.equals(action)){

System.out.println(“sd卡已挂载”);

}else if(“android.intent.action.MEDIA_UNMOUNTED”.equals(action)){

} } }

第二步:在清单文件中注册

<receiver android:name=”com.example.sdbroadcast.SdCardBroadcastReceiver”/>

第三步:在清单文件中添加意图过滤器,action里写监听的内容

<intent-filter>

<action android:name=”android.intent.action.MEDIA_MOUNTED”/>

<action android:name=”android.intent.action.MEDIA_UNMOUNTED”/>

<data android:scheme=”file”/>

</intent-filter>

普通广播

第一步:新建一个类继承BroadcastReceiver

publicclass MyBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if(intent.getAction().equals(“android.1804.receiver”)){

Bundle bundle = intent.getBundleExtra(“mybundle”);

String message = bundle.getString(“msg”);

Log.d(“amy”,message); //端午节

}

}

}

第二步:注册BroadcastReceiver

<receiverandroid:name=”.MyBroadcastReceiver”>

<!–广播优先级0-1000,默认500–>

<intent-filter android:priority=”1000″>

<action android:name=”android.1804.receiver”/>

</intent-filter>

</receiver>

第二步:注册BroadcastReceiver

<receiverandroid:name=”.MyBroadcastReceiver”>

<!–广播优先级0-1000,默认500–>

<intent-filter android:priority=”1000″>

<action android:name=”android.1804.receiver”/>

</intent-filter>

</receiver>

第二步:

注册BroadcastReceiver

publicclass ReceiverActivity extends AppCompatActivity {

MyBroadcastReceiverregisterReceiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_receiver);

registerReceiver= new MyBroadcastReceiver();

IntentFilterintentFilter = new IntentFilter();

intentFilter.setPriority(1000);

intentFilter.addAction(“android.1804.receiver”);

registerReceiver(registerReceiver,intentFilter);

}

@Override

protected void onDestroy() {

super.onDestroy();

unregisterReceiver(registerReceiver); }}

第三步:发送广播

publicvoid sendBroadcast(View view) {

Intent intent=new Intent();

intent.setAction(“android.1804.receiver”);

Bundle bundle=new Bundle();

bundle.putString(“msg”,”端午节快乐”);

intent.putExtra(“mybundle”,bundle);

//以下这行代码静态注册时必须添加,第二个参数为自定义广播接收者类名

// intent.setComponent(newComponentName(getPackageName(),”com.example.myapplication.MyBroadcastReceiver”));

sendBroadcast(intent);

}

有序广播

第一步:新建一个类继承BroadcastReceiver

publicclass MyBroadcastReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

if(intent.getAction().equals(“android.1804.receiver”)){

Bundle bundle = intent.getBundleExtra(“mybundle”);

String message = bundle.getString(“msg”);

Log.d(“amy”,message); //端午节

}

}

}

第二步:注册BroadcastReceiver(为了看到有序,案例中创建了两个广播接收者)

<receiver android:name=”.MyBroadcastReceiver”>

<!–广播优先级0-1000,默认500–>

<intent-filter android:priority=”100″>

<action android:name=”android.1804.receiver”/>

</intent-filter>

</receiver>

<receiver android:name=”.MyBroadcastReceiver2″>

<intent-filter android:priority=”1000″>

<action android:name=”android.1804.receiver”/>

</intent-filter>

</receiver>

第三步:发送广播

publicvoid sendBroadcast(View view) {

Intent intent=new Intent();

intent.setAction(“android.1804.receiver”);

intent.putExtra(“msg2″,”端午节快乐”);

sendOrderedBroadcast(intent,null);

}

粘性广播

第二步:注册BroadcastReceiver

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_receiver);

sendStickyBroadcast(newIntent(“android.1804.receiver.sticky”));

}

public void sendStickyBroadcast(Viewview) {

MyBroadcastReceivermyBroadcastReceiver = new MyBroadcastReceiver();

IntentFilterintentFilter = new IntentFilter(“android.1804.receiver.sticky”);

registerReceiver(myBroadcastReceiver,intentFilter);

}