BroadcastReceive的复习

来源:互联网 发布:windows最全历代系统 编辑:程序博客网 时间:2024/05/18 06:05

广播接受者的简单复习:

首先发送一条广播,通过方法 

Intent intent=new Intent("mysend");//action为自己定义的mysend,名字自己随便写了。接收的时候只要判断action是不是为mysend即可。sendBroadcast(intent);

简单的步骤:

首先肯定得写个广播接受者,继承BroadcastReceiver,并且重写 onReceive()方法即可

完事了,注册广播,有2中方法,

第一种:在清单文件AndroidManifest.xml中添加如下代码

<receiver android:name=".Bcast">
            <intent-filter>
                <action android:name="mysend"/>
            </intent-filter>
        </receiver>

我起的名字和上边一样是“mysend”就为了接收自己发送的广播。

第二种是手动注册:在activity中写如下代码:

//广播手动注册bc=new Bcast();filter=new IntentFilter();filter.addAction("android.provider.Telephony.SMS_RECEIVED");filter.addAction("mysend");registerReceiver(bc, filter);
这里写了2个action,一个自己定义的,一个是用来接收系统短信的。这个得在清单文件中增加权限<uses-permission android:name="android.permission.RECEIVE_SMS"/>
===

另外复习下如何读取短信内容,代码如下。

@Overridepublic void onReceive(Context context, Intent intent) {String  action=intent.getAction();if(action.equals("mysend")){Log.i("1111111","我自己发送的广播");}else if(action.equals("android.provider.Telephony.SMS_RECEIVED")){Bundle  bundle=intent.getExtras();Object[]  obj=(Object[]) bundle.get("pdus");for(Object o:obj){SmsMessage  sms=SmsMessage.createFromPdu((byte[])o);String num=sms.getOriginatingAddress();//电话号码String content=sms.getMessageBody();//短信内容Toast.makeText(context.getApplicationContext(), num+"::"+content, Toast.LENGTH_SHORT).show();}}}

另外小知识一枚,不调用系统短信界面,发送短信

SmsManager   manger=SmsManager.getDefault();manger.sendTextMessage(num, null, content, null, null);
//参数的意义,自己去查看,上边第一个参数为发送的目的地号码,第二个为发送者号码,我没写,第三个为短信的内容,后边2个没研究。
这个记得加权限<uses-permission android:name="android.permission.SEND_SMS"/>

原创粉丝点击