1,注册自定义的广播事件,这儿的“com.sdingba.bro.aa.bb”为自定义名字,并且registerReceiver注册广播事件
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
}
},new IntentFilter("com.sdingba.bri.aa.bb"));
2。开启广播事件。
Intent intent = new Intent();
intent.setAction("com.itheima.mobilesafe.tempstop");
intent.putExtra("packname", packname);
sendBroadcast(intent);
自定义锁屏的广播事件,
private class ScreenOffReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
tempStopProtectPackname = null;
}
}
offreceiver = new ScreenOffReceiver();
registerReceiver(offreceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
不能做耗时操作,
1,生命周期只有10s左右】
2,不能耗时
3,荧光棒通过Intent发送给Service,由service完成
4,不能使用子线程
广播的种类:
普通广播::
Intent iun = new Intent();
iun.pitExtra("msg","这是一条官博");
iun.setAction("BC_One");
snedBroadcast(intent);
calss BC! extnds BroadcastReceiver{
onReceive(...){
String s = intent.getString("msg");
sout(""+s);
}
}
在xml文件中
<receiver android:name="com.sdingba.xxx.xx">
<intent-filter android:priority="1000">
<action android:name="BC_One">
</intent-filter>
</receiver>
手动:
1,创建类
2,——>
IntentFilter intentfilter = new IntentFilter("BC_two");
BC2 bc2 = new BC2();
registerReceiver(bc2,intentfilter);
有序广播:
广播与广播之间传递数据只能在有序广播之间。
发送广播:
Bundle bundle = new Bundle();
bunldle.putString("text","xxxxx");
setResultExtras(bundle);
可以直接:
setResultExtras(“xxxx”);
然后接受:
String msage = getReaultData();
接受广播:
在onReceive()里面
Bundle bundle = getResultExtras(true);
string aa = bundle.getString("text");
sout(aa);
sendOrderedBroadcast(intent,null);//这是有序广播
//把这个广播终止掉,在有序广播有效果,普通没有
abortBroadcast();
开机启动广播:
public class BootCompleteReceiver extends BroadcastReceiver {
private SharedPreferences sp;
private TelephonyManager tm;
@Override
public void onReceive(Context context, Intent intent) {
sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
boolean protecting = sp.getBoolean("protecting", false);
if(protecting){
//开启防盗保护才执行这个地方
tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
// 读取之前保存的SiM信息;
String saveSim = sp.getString("sim", "")+"afu";
//读取当前的sim卡信息
String realSim = tm.getSimSerialNumber();
//比较是否一样
if(saveSim.equals(realSim)){
//sim没有变更,还是同一个哥们
}else{
// sim 已经变更 发一个短信给安全号码
System.out.println("sim 已经变更");
Toast.makeText(context, "sim 已经变更", 1).show();
SmsManager.getDefault().sendTextMessage(sp.getString("safenumber", ""), null, "sim changing....", null, null);
}
}
}
}
<receiver android:name="com.itheima.mobilesafe.receiver.BootCompleteReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
短信广播:
public class SMSReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
}
}
<receiver android:name="com.itheima.mobilesafe.receiver.SMSReceiver" >
<intent-filter android:priority="1000" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>