Android-广播接收者;短信监听

广播接收者
在android操作系统里面会有很多的广播事件。
BroadCastRecevier
SmsReceiver继承BroadCastRecevier
复写onRecevice(Context context,Intent intent)方法
//intent存放的有接收到的短信的内容
在AndroidManifest中设置
1.广播接收者的类名
2.接收目标的名字,优先级//如果程序中调用abortBroadcast();则结束广播事件,之后低优先级的程序都不会接受到广播


                    android:name=".SmsReceiver"
            >
         
             
         


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指定了广播的接收者即便是中间把广播给终止了 他还是会接收到广播事件

你可能感兴趣的:(Android,android,object,string,action,manager,电话)