在Android开发中,发送短信的广播是一种常见的技术,它可以在不需要用户交互的情况下自动发送短信。下面是一段关于如何发送短信的广播的代码:
public class SmsSender extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("SEND_SMS")) {
SmsManager smsMgr = SmsManager.getDefault();
String address = intent.getStringExtra("address");
String message = intent.getStringExtra("message");
smsMgr.sendTextMessage(address, null, message, null, null);
}
}
}
在这段代码中,我们可以看到onReceive()方法是广播接收器的入口点。在这个方法中,我们判断了广播的类型是“SEND_SMS”,如果是这种类型,那么我们就获取短信的地址和内容,然后调用SmsManager的sendTextMessage()方法发送短信。同时,我们还需要在AndroidManifest.xml中注册这个广播接收器:
<receiver android:name=".SmsSender">
<intent-filter>
<action android:name="SEND_SMS" />
</intent-filter>
</receiver>
在这个例子中,我们注册了名为SmsSender的广播接收器,并且指定了它监听的广播类型是“SEND_SMS”。这样,在我们发送短信的时候,就可以发送一个名为“SEND_SMS”的广播,让SmsSender接收到这个广播并执行发送短信的操作。
在Android开发中,发送短信的功能非常常见。如果想在发送短信的时候需要监听到短信发送的状态或者发送后的结果,就可以使用广播来实现。
以下是一个简单的示例代码,可以实现监听短信发送完成后的广播接收器:
1.创建一个广播接收器类,继承BroadcastReceiver,实现onReceive方法。
public class SmsSendStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("SENT_SMS_ACTION")) {
switch (getResultCode()) {
case Activity.RESULT_OK:
//短信发送成功
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case SmsManager.RESULT_ERROR_RADIO_OFF:
case SmsManager.RESULT_ERROR_NULL_PDU:
default:
//短信发送失败
break;
}
}
}
}
2.在Activity或者Service中创建SmsSendStatusReceiver的实例,并注册到系统广播中,指定广播的行为为SENT_SMS_ACTION。
SmsSendStatusReceiver smsSendStatusReceiver = new SmsSendStatusReceiver();
intentFilter.addAction("SENT_SMS_ACTION");
registerReceiver(smsSendStatusReceiver, intentFilter);
3.使用SmsManager发送短信,并获取短信发送状态。
PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent("SENT_SMS_ACTION"), 0);
SmsManager.getDefault().sendTextMessage(phoneNumber, null, smsContent, pi, null);
在短信发送完成后,广播接收器会接收到SENT_SMS_ACTION的广播,并根据getResultCode()方法的返回值来判断短信发送的状态,可以根据自己的需求来做相应的处理。
需要注意的是,在广播接收器中尽量不要做耗时的操作,否则会对系统造成不必要的负担,并且可能会导致ANR。可以在广播接收器中启动Service或者异步任务来处理。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/159513.html