基础学习day07--broadcastReceiver
来源:互联网 发布:php self this区别 编辑:程序博客网 时间:2024/06/05 17:30
1 为什么需要广播接收者(broadcastReceiver)
(1)老年人
(2)出租车司机
(3)寂寞的大学生 情感夜话 卖药的 音乐台
(4)想听广播必须的有电台 你在买一个收音机 安装一块电池 调到一个合适的频道
(5)Android系统内部相当于已经有一个电台 定义了好多的广播事件 比如外拨电话 短信到来 sd卡状态 电池电量变化....
(6)谷歌工程师给我们定义了一个组件专门用来接收这些事件的
(7)谷歌工程师为什么要设计这样一个组件 目的就是为了方便开发者进行开发
(8)javase javaee javame
2 广播接收者案例_ip拨号器
(1)定义一个类继承BroadCastReceiver
public class OutGoingCallReceiver extends BroadcastReceiver {//当接收到外拨电话的事件的时候回执行这个方法@Overridepublic void onReceive(Context context, Intent intent) {//[0]获取到我们保存的ip号码 SharedPreferences sp = context.getSharedPreferences("config", 0);//[0.1]获取我们保存的ip号码String ipnumber = sp.getString("ipnumber", "");//[1]获取当前我们要拨打的电话号码 String currentNumber = getResultData();//[1.1]判断拨打的电话是否是长途 if (currentNumber.startsWith("0")) {//[2]在当前的号码前面加上一个17951 setResultData(ipnumber+currentNumber);}}}
(2)在清单文件里面配置一下
<!--配置广播接收者 --> <receiver android:name="com.itheima.ipdail.OutGoingCallReceiver"> <intent-filter > <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> </intent-filter> </receiver>
(3)当我们配置的action 的事件发生了 onReceive方法就会执行
3 广播接收者案例_sd卡状态监听
(1)定义广播接收者
package com.itheima.sdcardstate;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class SdcardReceiver extends BroadcastReceiver {//当sd卡被卸载 或者被挂载上来的时候 会执行@Overridepublic void onReceive(Context context, Intent intent) {//[1]获取到当前广播的事件类型 String action = intent.getAction();//[2]对action做一个判断 if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){System.out.println("说明sd卡 卸载了");}else if ("android.intent.action.MEDIA_MOUNTED".equals(action)) {System.out.println("说明sd卡挂载了");}}}
(2)在清单文件配置一下
<receiver android:name="com.itheima.sdcardstate.SdcardReceiver"> <intent-filter > <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action."/> <!--想让上面的这2个事件生效 必须的加上这样的一个data --> <data android:scheme="file"/> </intent-filter> </receiver>
4 广播接收者案例_短信监听器
(1)定义广播接收者
package com.itheima.smslistener;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsMessage;public class SmsListenerReceiver extends BroadcastReceiver {//当短信到来的时候 就会执行这个方法@Overridepublic void onReceive(Context context, Intent intent) {//[1]获取发短信送的号码 和内容 Object[] objects = (Object[]) intent.getExtras().get("pdus");for (Object pdu : objects) {//[2]获取smsmessage实例 SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);//[3]获取发送短信的内容 String body = smsMessage.getMessageBody();//[4]获取发送者 String address = smsMessage.getOriginatingAddress();System.out.println("body:"+body+"---"+address);//[5]比如发送短信 扣流量 }}}
(2)在清单文件里面注册一下
<receiver android:name="com.itheima.smslistener.SmsListenerReceiver"> <intent-filter > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
5 不同版本广播的特点
(1)4.0之后的手机 谷歌为了更加安全考虑 要求第一次安装应用的时候必须有界面
(2)在设置页面有一个强行停止的按钮 如果点击了 广播事件就不生效
(3)在2.3的版本的手机没有这样的安全设计
6 广播接收者案例_卸载安装
09-08 03:26:15.926: E/AndroidRuntime(1152): java.lang.RuntimeException: Unable to start receiver com.itheima.bootreceiver.BootReceiver: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
7 广播接收者案例_开机启动
8 有序广播和无序广播
无序广播:类似新闻联播:广播不可以被终止 数据不可以被修改
有序广播:类似中央发送的红头文件 按照优先级一级一级的接收 有序广播可以被终止 数据可以被修改
9 特殊广播接收者
比如操作特别频繁的广播事件 屏幕的锁屏和解锁 电池电量的变化 这样的广播接收者在清单文件里面注册无效
09-08 07:25:42.239: E/ActivityThread(2173): Activity com.itheima.screen.MainActivity has leaked IntentReceiver com.itheima.screen.ScreenReceiver@b6486088 that was originally registered here. Are you missing a call to
unregisterReceiver()?
10 样式和主题
style Theme
共同点:(1)定义的方式是一样的
不同点:(1)style作用范围比较窄 (控件 button textview) theme 作用在activity或者Application节点下
11 国际化 i18n
小编 编辑
国际化就是在res下创建对应国家环境目录 values-en .....
12常见对话框
(1)普通对话框
//构建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("警告");builder.setMessage("世界上最遥远的距离是没有网络");builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("点击了确定按钮 执行的逻辑");}});builder.setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("点击了取消按钮");}});//最后一步一定要记得 show出来 builder.show();
(2)单选对话框
(3)多选对话框
(4)进度条对话框
补充 2种上下文的区别
this:mainActivity 子类
getApplicationContext(): 返回Context 父类
对话框不能用getApplicationContext();
13 Android中动画
(1)属性动画
(2)补间动画
(3)帧动画
就是加载一系列的图片资源
0 0
- 基础学习day07--broadcastReceiver
- Android学习笔记 day07 _ Android四大组件之BroadcastReceiver
- Android- BroadCastReceiver 基础学习
- Android之BroadcastReceiver基础学习
- android基础学习之BroadcastReceiver
- Android BroadcastReceiver的基础学习
- 黑马程序员_Java基础_我的Day07学习笔记
- 【幻化万千戏红尘】qianfeng-Android-Day07-AsyncTask基础学习:
- Java基础Day07笔记
- C++ 学习笔记day07
- java 学习day07
- java学习day07
- SQLserver学习day07 事务
- CSS学习Day07
- 安卓基础学习_ BroadcastReceiver
- 黑马程序员_java基础day07
- 黑马程序员--Java基础Day07
- 传智播客 Java基础 day07笔记
- thinkphp3.2 $Page->rollPage=5; //控制最大页码显示数
- session共享
- 科锐课堂笔记:2017/4/25 异常
- PLSQL的使用
- useradd和groupadd 详解
- 基础学习day07--broadcastReceiver
- 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
- Android开发集成微信分享
- [Python]面向对象编程---类、实例、方法的对比(4)
- hibernate获取session的两种方式分别是openSession() 方法和getCurrentSession() 方法。
- Construct Binary Tree from Preorder and Inorder Traversal 解题报告
- 【机房重构】组合查询——模板方法
- android google官方的下拉刷新SwipeRefreshLayout
- 日处理20亿数据,实时用户行为服务系统架构实践