文章目录
Android短信操作可以通过SmsManager类实现发送和接收短信,需要添加短信权限。
Android短信操作
发送短信
1、获取SmsManager对象:
SmsManager smsManager = SmsManager.getDefault();
2、设置收件人号码和内容:
String phoneNumber = "接收方手机号码"; String message = "短信内容";
3、发送短信:
smsManager.sendTextMessage(phoneNumber, null, message, null, null);
接收短信
1、注册广播接收器:
public class SmsReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); for (Object pdu : pdus) { SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu); String senderPhoneNumber = smsMessage.getDisplayOriginatingAddress(); String messageBody = smsMessage.getDisplayMessageBody(); // 处理接收到的短信内容 } } } }
2、在AndroidManifest.xml中注册广播接收器:
<receiver android:name=".SmsReceiver"> <intentfilter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intentfilter> </receiver>
3、动态注册广播接收器(需要在Activity中执行):
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); registerReceiver(smsReceiver, filter);
4、取消注册广播接收器(需要在Activity中执行):
unregisterReceiver(smsReceiver);
常见问题与解答
问题1:如何发送彩信?
答案:发送彩信需要使用MmsManager对象,具体步骤如下:
1、获取MmsManager对象:
MmsManager mmsManager = MmsManager.getDefault();
2、设置收件人、内容、文件路径等参数:
String phoneNumber = "接收方手机号码"; String subject = "彩信主题"; String body = "彩信内容"; Uri fileUri = Uri.parse("文件路径"); // 可以是图片、音频等文件的URI
3、发送彩信:
mmsManager.sendMultimediaMessage(phoneNumber, null, subject, body, new String[]{fileUri.toString()});
问题2:如何监听短信的读取状态?
答案:可以通过ContentObserver监听短信的读取状态,首先创建一个ContentObserver类,然后重写onChange方法,最后在需要监听的地方注册ContentObserver,以下是一个简单的示例:
1、创建ContentObserver类:
public class SmsStatusObserver extends ContentObserver { public SmsStatusObserver(Handler handler) { super(handler); } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); // 短信读取状态发生变化时的处理逻辑,例如更新UI等操作。 } }