您的位置:首页 > 移动开发 > Android开发

学习Android广播小结(二)

2017-02-08 18:21 120 查看
继续上一次的无序广播,下面我分享一下有序广播。

有序广播就是有先后顺序的,不像无序广播一样,谁都可以同时接收。但是有序广播也有缺点,当接收者一多,数据的传递就会遗失或者增加一些其他的东西。

有序广播的发送: sendOrderedBroadcast(intent,null);

有序广播的接收就有一个优先级,上一次的动态广播和静态广播,前者的优先级就比后者高,但是都可以为它们设置优先级。优先级的取值范围(Priority -1000到1000,还有就是int类型的最大值也可以。),两者的设置优先级方法也不同,动态广播用Java代码设置: intentFilter.setPriority(998)。静态广播在清单文件设置:在intent-filter中增加一个参数即可,android:priority=”999”。

这里说明一下,优先级的值越大优先级越高。

最后,我写了个系统广播中短信接收,先判断intent传递的action是否相同,通过bundle得到传递过来的短信详细信息,然后就知道了发送人的电话号码及内容,代码如下:

if (“android.provider.Telephony.SMS_RECEIVED”.equals(intent.getAction())){

Log.i(“tt”,”有短信进来了!”);

//得到短信内容和发送者

Bundle bundle=intent.getExtras();

Object[] objects= (Object[]) bundle.get(“pdus”);

//短信消息

SmsMessage sm[]=new SmsMessage[objects.length];

for (int i = 0; i < objects.length; i++) {

sm[i]=SmsMessage.createFromPdu((byte[]) objects[i]);

}

for (SmsMessage s : sm) {

String body=s.getDisplayMessageBody();//短信内容

//短信地址

address = s.getDisplayOriginatingAddress();

Log.i(“tt”,”发送者:”+ address +” 短信内容:”+body);

}

//短信拦截

if(“”.equals(address)){

Log.i(“tt”,”拦截了。。。。。。。。。。”);

abortBroadcast();

}

}

短信发送:

//得到输入的电话号码

String phone=check1_text.getText().toString();

//发送内容(自定义)

String content=”“;

//得到信息管理者

SmsManager manager = SmsManager.getDefault();

ArrayList list = manager.divideMessage(content);

//因为一条短信有字数限制,因此要将长短信拆分

for(String text:list){

manager.sendTextMessage(phone, null, text, null, null);

}

好了,亲们。短信的发送方法有很多,我就不一一说了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: