android BroadcastReceiver详细讲解1-自带的广播接受器-拨号、短信、卸载/安装、开机启动
2015-11-18 10:41
447 查看
android中自带的广播接受器
在上一篇文章中SD卡的监听下面我继续来介绍
安装与卸载的监听
我们先了解android中安装与卸载的action<intent-filter > <action android:name="android.intent.action.PACKAGE_REMOVED"/> <action android:name="android.intent.action.PACKAGE_ADDED"/> <data android:scheme="package"></data> </intent-filter>
将上段代码,添加到我们注册的广播接收器中 在AndroidManifest.xml
<receiver android:name="IntallReceiver">
<intent-filter > <action android:name="android.intent.action.PACKAGE_REMOVED"/> <action android:name="android.intent.action.PACKAGE_ADDED"/> <data android:scheme="package"></data> </intent-filter>
</receiver>
2.我们新建一个广播接收器java类
public class IntallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String packageName = intent.getData().toString(); String action = intent.getAction(); // 如果是卸载 if ("android.intent.action.PACKAGE_REMOVED".equals(action)) { Toast.makeText(context, packageName+"应用程序被卸载", 1).show(); System.out.println(packageName+"已删除"); } else if ("android.intent.action.PACKAGE_ADDED".equals(action)) { Toast.makeText(context, packageName+"应用程序安装", 1).show(); System.out.println(packageName + "已安装"); } } }
然后运行我们的程序
这是监听卸载
监听拨打电话
1 还是先了解一下android的拨打电话action<!-- 属性代表着给当前接收者设置优先级,优先级越高越优先接收到广播。 --> <intent-filter android:priority="1000" > <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter>
注意还有相应的权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
2 新建一个广播接收器java类 继承BroadcastReceiver
public class IPCallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //获取拨打电话的号码 String call=getResultData(); //在电话号码前加上110,然后返回数据 setResultData("110"+call); } }
我们看一下运行的结果
我们拨打 789-看图片显示的是110789
//在电话号码前加上110,然后返回数据
setResultData(“110”+call);
监听开机启动
1 注册广播接受器<receiver android:name="BootCompeletedReceiver"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
2 权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
3 类
public class BootCompeletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "开机启动已完成", 1).show(); } }
短信拦截器
1 注册广播接受器<receiver android:name="SmsReceiver"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED"></action> </intent-filter> </receiver>
2 权限
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
3 类
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 获取短信 pdus : 短信集合 Object[] object = (Object[]) intent.getExtras().get("pdus"); for (Object pdus : object) { // 获取短信的对象 // //通过Android API中的SmsMessage类将短信字节数组转化为短信对象 SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus); // 获取短信的来源 String address = message.getOriginatingAddress(); // 获取短信的内容 String body; body = message.getMessageBody(); String string2; try { string2 = new String(body.getBytes(),"gbk"); Toast.makeText(context, address + "----" + string2, 1).show(); System.out.println(address + "----" + string2); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
ok,以上是android中自带的广播接收器,下一篇文章我们来讲无序广播和有序广播
更多
相关文章推荐
- android中popupwindow的实现,弹出后页面变暗
- Android Diaolog与AlertDialog用法实例
- Android控件之SlidingDrawer(滑动式抽屉)详解与实例
- Android 反射
- Android学习【11】触摸屏位置控制
- Android SDK Manager国内无法更新的解决方案
- android蓝牙开发---与蓝牙模块进行通信
- xcode与androidstudio 设置自定义主题
- android关于base64转化二进制字符图片的问题,提交的数据报非法字符的问题的解决
- Android之activity中传递数据
- Android中Canvas绘图基础详解(附源码下载)
- 基于Android 实现图片平移、缩放、旋转同时进行
- Android 增强版百分比布局库
- State List
- Android ListView嵌套checkbox点击事件
- Android中使用log4j、android-logging-log4j-1.0
- android Interpolator
- Android与H5的交互
- Android 中 EventBus 的使用之多线程事件处理
- Android摄像头抓取图像的格式