广播接受者的简单复习:
首先发送一条广播,通过方法
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"/>
===
另外复习下如何读取短信内容,代码如下。
@Override
public 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"/>