首页 > 系统 > Android > 正文

学习Android广播小结(二)

2019-11-09 15:30:44
字体:
来源:转载
供稿:网友

继续上一次的无序广播,下面我分享一下有序广播。 有序广播就是有先后顺序的,不像无序广播一样,谁都可以同时接收。但是有序广播也有缺点,当接收者一多,数据的传递就会遗失或者增加一些其他的东西。 有序广播的发送: 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); } 好了,亲们。短信的发送方法有很多,我就不一一说了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表