Android-广播接收者;短信监听
2012-07-08 12:35
411 查看
广播接收者
在android操作系统里面会有很多的广播事件。
BroadCastRecevier
SmsReceiver继承BroadCastRecevier
复写onRecevice(Context context,Intent intent)方法
//intent存放的有接收到的短信的内容
在AndroidManifest中设置
1.广播接收者的类名
2.接收目标的名字,优先级//如果程序中调用abortBroadcast();则结束广播事件,之后低优先级的程序都不会接受到广播
<receiver
android:name=".SmsReceiver"
>
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
pdus(短信内容)存放在intent里面
public void onReceive(Context context, Intent intent) {
// intent 存放的有接收到的短信的内容
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for (Object pdu : pdus) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
// 获取短信的正文内容
String content = message.getMessageBody();
//获取短信的发送者
String address = message.getOriginatingAddress();
System.out.println("信息内容:"+content);
System.out.println("发送者"+address);
}
if("电话号码".equals(adress)){
abortBroadcast();
SmsManage manager = SmsManager.getDefault();
}
}
可设置优先级
然后再程序中调用
abortBroadcast();//结束广播
即可实现屏蔽短信
-----------------------------------------------------------------------------------------------
ip拨号
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<receiver android:name=".OutCallReciver" >
<intent-filter android:priority="1000" >
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
public class OutCallReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println(getResultData());
System.out.println(intent.getAction());
SharedPreferences data = context.getSharedPreferences("config", Context.MODE_PRIVATE);
String ipnum = data.getString("tel", "");
setResultData(ipnum+getResultData());
}
}
-----------------------------------------------------------------------------------------------------------
在代码中注册广播监听者
IntentFilter filter = new IntentFilter();;
SmsReceiver receiver = new SmsReceiver ();
receiverRegister(receiver,fileter);
BroadCastRecevier 有两种注册方式
1.清单文件里注册:一旦应用程序被部署到手机,广播接收者就会生效
2.代码里面注册:一旦代码所在的进程被杀死了,广播接收者就失效了。
广播接收者分为两种类型:
1.有序的广播。短信来到的广播 电话拨打的广播
-1000~1000 设置广播的优先级
android:priority="1000"
从高优先级->低优先级 一次传递
abortbroadcast()方法 可以终止广播事件.
2.无序的广播
没有优先级 任何人 注册广播接受者的人,都可以接收到广播.
没有abortboradcast()方法
自定义广播
sendBroadcast(Intent intent);//发送广播
sendOrderedBroadcast(intent, receiverPermission );//发送一条有序的广播
sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras)
意图
权限
如果发送广播的时候,使用的是上面的api发送出去的 第三个参数resultReceiver指定了广播的接收者即便是中间把广播给终止了 他还是会接收到广播事件
在android操作系统里面会有很多的广播事件。
BroadCastRecevier
SmsReceiver继承BroadCastRecevier
复写onRecevice(Context context,Intent intent)方法
//intent存放的有接收到的短信的内容
在AndroidManifest中设置
1.广播接收者的类名
2.接收目标的名字,优先级//如果程序中调用abortBroadcast();则结束广播事件,之后低优先级的程序都不会接受到广播
<receiver
android:name=".SmsReceiver"
>
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
pdus(短信内容)存放在intent里面
public void onReceive(Context context, Intent intent) {
// intent 存放的有接收到的短信的内容
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
for (Object pdu : pdus) {
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
// 获取短信的正文内容
String content = message.getMessageBody();
//获取短信的发送者
String address = message.getOriginatingAddress();
System.out.println("信息内容:"+content);
System.out.println("发送者"+address);
}
if("电话号码".equals(adress)){
abortBroadcast();
SmsManage manager = SmsManager.getDefault();
}
}
可设置优先级
然后再程序中调用
abortBroadcast();//结束广播
即可实现屏蔽短信
-----------------------------------------------------------------------------------------------
ip拨号
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<receiver android:name=".OutCallReciver" >
<intent-filter android:priority="1000" >
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
public class OutCallReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
System.out.println(getResultData());
System.out.println(intent.getAction());
SharedPreferences data = context.getSharedPreferences("config", Context.MODE_PRIVATE);
String ipnum = data.getString("tel", "");
setResultData(ipnum+getResultData());
}
}
-----------------------------------------------------------------------------------------------------------
在代码中注册广播监听者
IntentFilter filter = new IntentFilter();;
SmsReceiver receiver = new SmsReceiver ();
receiverRegister(receiver,fileter);
BroadCastRecevier 有两种注册方式
1.清单文件里注册:一旦应用程序被部署到手机,广播接收者就会生效
2.代码里面注册:一旦代码所在的进程被杀死了,广播接收者就失效了。
广播接收者分为两种类型:
1.有序的广播。短信来到的广播 电话拨打的广播
-1000~1000 设置广播的优先级
android:priority="1000"
从高优先级->低优先级 一次传递
abortbroadcast()方法 可以终止广播事件.
2.无序的广播
没有优先级 任何人 注册广播接受者的人,都可以接收到广播.
没有abortboradcast()方法
自定义广播
sendBroadcast(Intent intent);//发送广播
sendOrderedBroadcast(intent, receiverPermission );//发送一条有序的广播
sendOrderedBroadcast(intent, receiverPermission, resultReceiver, scheduler, initialCode, initialData, initialExtras)
意图
权限
如果发送广播的时候,使用的是上面的api发送出去的 第三个参数resultReceiver指定了广播的接收者即便是中间把广播给终止了 他还是会接收到广播事件
相关文章推荐
- Android短信的发送和广播接收者实现短信的监听
- android 使用广播接收者监听短信和拦截外拨电话
- android广播和短信广播详解----使用广播接收者监听短信
- android基础笔记——广播接收者,实现短信监听
- Android短信的发送和广播接收者实现短信的监听
- android广播接收者实例_短信监听
- android 使用广播接收者监听短信和拦截外拨电话
- android 使用广播接收者监听短信和拦截外拨电话
- Android短信的发送和广播接收者实现短信的监听
- Android短信的发送和广播接收者实现短信的监听
- 使用广播接收者怎么只能监听收到的短信 ?为啥短信发送号码和时间为null
- android广播监听短信并显示内容
- android广播和短信广播详解----使用广播接收者窃听短信
- Android开发入门之采用广播接收者实现短信窃听器
- Android(java)学习笔记176:BroadcastReceiver之 短信发送的广播接收者
- Android 通过广播接受者监听用户的短信
- 使用广播接收者监听短信
- Android 监听短信(同时监听广播和数据库)
- 广播接收者之监听短信并获取内容
- Android学习篇章57-广播BroadcastReceiver短信监听