广播接收者
在android操作系统里面会有很多的广播事件。
BroadCastRecevier
SmsReceiver继承BroadCastRecevier
复写onRecevice(Context context,Intent intent)方法
//intent存放的有接收到的短信的内容
在AndroidManifest中设置
1.广播接收者的类名
2.接收目标的名字,优先级//如果程序中调用abortBroadcast();则结束广播事件,之后低优先级的程序都不会接受到广播
>
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拨号
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指定了广播的接收者即便是中间把广播给终止了 他还是会接收到广播事件