android中的广播--BroadcastReceiver
2016-07-01 14:11
357 查看
1:显示意图发送广播-----携带数据!--------正常广播[/u]
2:隐士意图的广播的发送与接受哦!-----正常广播!
action----category---data的匹配操作!
在manifest中设置广播的清单文件哦!--------priority设置广播的执行等级
默认的接收广播的顺序是在注册清单中的顺序广播哦!------可以通过等级设置,来控制接收广播的顺序哦哦!
3:---有序广播》[/u]
广播的拦截------abortBroadcast----终止发送哦哦![/u]
@@ 可以通过priority来控制广播的先后顺序哦!
@@先收到广播的BroadcastReceiver可以拦截广播的继续发送哦哦!
4:静态注册--[/u]-----常驻型的注册方式哦!------直接在manifest的清单文件中注册的哦哦!
动态注册-(可控的生命周期)-[/u]------非常驻型的注册方式哦!--不在manifest中注册,手动在程序中注册,发广播消息以及解注册等系列操作哦!
@@注册
@@发送广播消息
@@解注册
5:广播的特殊作用------用于各个组件之间的通信哦![/u]
@@有一个Activity
@@有一个Service
@@在Service中存在一个Thread
@@在Activity中动态注册一个广播,该广播为Activity的一个内部类(为了方便调用数据)
@@保持广播的生命周期和Activity的生命周期是同步的,即为在onCreate中注册,在onDestroy中解注册哦!
@@在Service中的Thread子线程中不断地发送目标广播给Activity哦(即为目标数据)!
@@在广播中就可以接受来自Service中Thread子线程的目标广播数据哦哦!因为数据在广播内部,而广播在Activity内部,
那么Activity就可以获取该数据,进行一定的设置,即完成了通信咯!
6:系统广播---android系统作为广播的发送者,我们要做的就是接受这些广播消息哦哦 ![/u]
@@监听电量的变化哦哦!
@@卸载APK的操作变化哦哦!
@@开机自启动的操作变化哦!
各项操作的权限的声明哦!
=====================================================================
7:了解短信的监听提醒哦哦![/u]
8:Sticky广播---可以在注册时,取回最近错过的一条广播!
添加权限
重新设置发送广播的方式
public void go1(View view) { Toast.makeText(this, "发送广播1", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(this, MyReceiver1.class); //广播发送消息哦哦----显示意图的广播发送! intent.putExtra("data", "落霞与孤鹜齐飞,秋水共长天一色"); this.sendBroadcast(intent);
} //在广播的onReceive的方法中接受广播的通知消息! //广播的onReceive方法是在主线程中执行的,所以不能存在耗时的操作哦! //广播的生命周期只有一个方法onReceive方法,执行完之后,广播就完蛋咯! //由于广播的生命周期比较短,所以不推荐在广播中开启子线程,(进程等级决定) //过分的耗时操作还是在子线程中,子线程还是写在服务Service中哦! //广播不是上下文哦!参数中存在上下文哦! @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "1111111111111111" + intent.getStringExtra("data"), Toast.LENGTH_SHORT).show(); }
2:隐士意图的广播的发送与接受哦!-----正常广播!
action----category---data的匹配操作!
Intent intent = new Intent(); //通过隐士意图完成跳转哦哦! //匹配多个广播接收者哦,同时发送消息哦! intent.setAction("love"); this.sendBroadcast(intent);
在manifest中设置广播的清单文件哦!--------priority设置广播的执行等级
默认的接收广播的顺序是在注册清单中的顺序广播哦!------可以通过等级设置,来控制接收广播的顺序哦哦!
<receiver android:name=".MyReceiver1" android:enabled="true" android:exported="false"> <intent-filter android:priority="1"> <action android:name="love"/> <category android:name="tong"/> <data android:scheme="you"/> </intent-filter> </receiver>
3:---有序广播》[/u]
public void go3(View view) { Toast.makeText(this, "有序广播哦!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(); intent.setAction("love"); this.sendOrderedBroadcast(intent,null); }
广播的拦截------abortBroadcast----终止发送哦哦![/u]
@Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "222222222222222", Toast.LENGTH_SHORT).show(); this.abortBroadcast();//拦截广播哦! }
@@ 可以通过priority来控制广播的先后顺序哦!
@@先收到广播的BroadcastReceiver可以拦截广播的继续发送哦哦!
4:静态注册--[/u]-----常驻型的注册方式哦!------直接在manifest的清单文件中注册的哦哦!
动态注册-(可控的生命周期)-[/u]------非常驻型的注册方式哦!--不在manifest中注册,手动在程序中注册,发广播消息以及解注册等系列操作哦!
@@注册
IntentFilter intentFilter = new IntentFilter();//创建IntentFilter对象! intentFilter.addAction("aa.bb.cc");//添加action属性哦! this.registerReceiver(mMyBroadcastReceriver, intentFilter);//注册广播
@@发送广播消息
Intent intent = new Intent(); intent.putExtra("data", "落霞与孤鹜齐飞"); intent.setAction("aa.bb.cc"); this.sendBroadcast(intent);
@@解注册
//解注册的操作---一般在ondestroy中进行解注册的操作哦哦! this.unregisterReceiver(mMyBroadcastReceriver);
5:广播的特殊作用------用于各个组件之间的通信哦![/u]
@@有一个Activity
@@有一个Service
@@在Service中存在一个Thread
@@在Activity中动态注册一个广播,该广播为Activity的一个内部类(为了方便调用数据)
@@保持广播的生命周期和Activity的生命周期是同步的,即为在onCreate中注册,在onDestroy中解注册哦!
@@在Service中的Thread子线程中不断地发送目标广播给Activity哦(即为目标数据)!
@@在广播中就可以接受来自Service中Thread子线程的目标广播数据哦哦!因为数据在广播内部,而广播在Activity内部,
那么Activity就可以获取该数据,进行一定的设置,即完成了通信咯!
6:系统广播---android系统作为广播的发送者,我们要做的就是接受这些广播消息哦哦 ![/u]
@@监听电量的变化哦哦!
@Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BATTERY_LOW")) { Toast.makeText(context, "电量低嘀嘀嘀嘀嘀嘀嘀嘀嘀", Toast.LENGTH_SHORT).show(); } if (intent.getAction().equals("android.intent.action.BATTERY_OKAY")) { Toast.makeText(context, "电量好", Toast.LENGTH_SHORT).show(); } if (intent.getAction().equals("android.intent.action.BATTERY_CHANGED")) { Toast.makeText(context, "电量变啦哦哦哦!", Toast.LENGTH_SHORT).show(); } }
@@卸载APK的操作变化哦哦!
<intent-filter> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <data android:scheme="package"/> </intent-filter>
@@开机自启动的操作变化哦!
<intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter>
各项操作的权限的声明哦!
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.BATTERY_STATS"/> <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
=====================================================================
7:了解短信的监听提醒哦哦![/u]
<intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> </intent-filter>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
@Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (bundle != null) { //通过键“pdus”来获取消息! Object[] objectArray = (Object[]) bundle.get("pdus"); SmsMessage[] message = new SmsMessage[objectArray.length]; for (int i = 0; i < objectArray.length; i++) { message[i] = SmsMessage.createFromPdu((byte[]) objectArray[i]); StringBuffer str=new StringBuffer("from:"); str.append(message[i].getDisplayOriginatingAddress()); str.append("\nmessage:\n"); str.append(message[i].getDisplayMessageBody()); Toast.makeText(context, str.toString(), Toast.LENGTH_SHORT).show(); } }
8:Sticky广播---可以在注册时,取回最近错过的一条广播!
添加权限
<uses-permission android:name="android.permission.BROADCAST_STICKY"/>
重新设置发送广播的方式
this.sendStickyBroadcast(intent);
相关文章推荐
- Android 通过ADB Wireless无线调试应用
- MultiAutoCompleteTextView和AutoCompleteTextView对比
- Android之四大组件之一-Activity(三)
- Android使用fitsSystemWindows属性实现--状态栏【status_bar】各版本适配方案
- Android studio怎么找到当前文件在电脑路径位置
- android 代码 混淆- 原来如此简单
- 隐藏百度地图导航菜单栏
- AutoCompleteTextView关联输入框
- Android - butterKnife与realm同时依赖;可能出现app:transformResourcesWithMergeJavaResForDebug错误
- [魅族Degao]Android客户端性能优化
- android studio 导入第三方库的记录
- android onInterceptTouchEvent事件
- Android进阶之路——安卓编程规范
- android流式布局:FlexboxLayout用法探析(一)
- Android TelephonyManager 的来源
- Android基础_6.0权限请求
- android动画——属性动画(Property Animation)
- android中怎么画统计图
- android 动画 ——视图动画(View Animation)
- 实现状态栏透明化(Android5.0)