广播和自定义广播事件
2016-04-15 16:45
483 查看
1,注册自定义的广播事件,这儿的“com.sdingba.bro.aa.bb”为自定义名字,并且registerReceiver注册广播事件
2。开启广播事件。
自定义锁屏的广播事件,
不能做耗时操作,
1,生命周期只有10s左右】
2,不能耗时
3,荧光棒通过Intent发送给Service,由service完成
4,不能使用子线程
广播的种类:
普通广播::
在xml文件中
手动:
1,创建类
2,——>
有序广播:
广播与广播之间传递数据只能在有序广播之间。
发送广播:
开机启动广播:
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>
相关文章推荐
- 我是如何一步步攻破一家互联网公司的
- IOS苹果Xcode帮助文档阅读指南
- 状态栏一体化及其带来的软键盘自适应问题(二)
- Core Animation - CATextLayer和富文本
- 动态合并datagrid的单元格+列冻结
- jQuery ajax 请求HttpServlet返回[HTTP/1.1 405 Method not allowed]
- 【JVM】异常和return
- java线程同步中使用自增操作时的注意
- C语言 计算某段程序的执行时间(毫秒)
- Redis的简单使用
- diy数据库(一)--概况
- swift语言的Block
- mysql load data infile
- Android学习----自适应国际化语言
- HM编码器代码阅读(16)——运动补偿MC
- 机器学习相关资源
- Android 源码5.1调用系统关机
- 编码规则的发展历程(通俗版)
- FTP创建与操作
- JS验证URL正则