Android—系统广播案列(来电、短信)
来源:互联网 发布:2016网络古装剧 编辑:程序博客网 时间:2024/06/04 17:44
案列一:来电
(现在大部分手机在最开始的时候都自带安装了一个手机管家,权限比我们自己的写的第三方软件高,所以有可能读取不到)
核心代码
package com.example.android21_phone;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.TelephonyManager;import android.util.Log;/** * Created by Administrator on 2017/7/11 0011. */public class MyPhoneState extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if("android.intent.action.PHONE_STATE".equals(intent.getAction())){ //获取电话管理者 TelephonyManager tm= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int state=tm.getCallState(); //获取电话号码 String number=intent.getStringExtra("incoming_number"); switch (state) { case TelephonyManager.CALL_STATE_RINGING: Log.i("test","有电话进来了"+number); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i("test","通话中"+number); break; case TelephonyManager.CALL_STATE_IDLE: Log.i("test","通话结束了"+number); break; } } }}
配置receiver
<receiver android:name=".MyPhoneState"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"></action> </intent-filter> </receiver>
注意:在AndroidManifest.xml中要设置读取电话状态的权限
<!--读取电话状态的权限--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
案例二:短信
(读取短信必须要在手机设置中的应用管理中,找到你安装的应用给他设置读取短信内容的权限)
核心代码package com.zking.administrator.g160628_android22_sms;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.telephony.SmsMessage;import android.util.Log;/** * Created by Administrator on 2017/7/13 0013. */public class MySMS extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if("android.provider.Telephony.SMS_RECEIVED".equals(intent.getAction())){ Log.i("test","收到短信了"); Bundle bundle=intent.getExtras(); Object object[]= (Object[]) bundle.get("pdus"); SmsMessage smsMessage[]=new SmsMessage[object.length]; for (int i = 0; i < object.length; i++) { smsMessage[i]=SmsMessage.createFromPdu((byte[])object[i]); } for (SmsMessage message : smsMessage) { String address=message.getOriginatingAddress(); String body=message.getDisplayMessageBody(); Log.i("test",address+":"+body); } } }}配置receiver
<receiver android:name=".MySMS"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> </intent-filter> </receiver>
注意:在AndroidManifest.xml中要设置读取短信的权限
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
总结:接收系统广播的步骤
1、写一个类,继承BroadcastReceiver重写里面onReceive方法
2、通过if判断属于哪个系统广播(比如说上面案例一、案列二的短信和来电)
3、再通过判断状态去执行你想要执行的操作
4、再XML中配置receiver
5、再设置权限具体的系统广播权限
阅读全文
0 0
- Android—系统广播案列(来电、短信)
- Android系统广播(来电示例) 系统广播大全
- 系统广播的收到短信和来电/去电
- Android 系统自动获取来电/短信/提示铃声
- 21.系统广播之来电广播
- Android系统广播实现短信监听
- Android系统广播实现短信监听
- Android来电和短信操作
- BroadcastReceive 系统广播 短信广播
- 22.系统广播-短信
- android 使用广播 接收和拦截 android系统短信
- Android——BroadcastReceiver 广播 短信拦截
- Android广播机制—拦截接收短信
- android短信与广播
- android监听来电去电广播
- android监听来电去电广播
- android 4.4 来电广播的变化
- android 电话来电、去电广播
- Drools7.0.0.Final Unsupported major.minor version 52.0异常
- eclipse cdt Program "make" not found in PATH
- expect----提供用户名和密码的ssh自动登录
- 最大和问题(一维数组和二维数组)(dp问题)
- redis+Keepalived主从热备秒级切换
- Android—系统广播案列(来电、短信)
- 关于Android APN的学习
- KafkaConsumer使用详解
- Android 侧滑删除的实现
- 【接口】-MQ VS WebService
- Javascript unit test framework
- 基于数组的排序算法
- windows和linux的动态库环境变量
- ambari+hdp+spark集群本地源搭建详细图解教程