1. 发送短信
SmsManager
类用来发送短信
public void sendTextMessage(
String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress
,接收手机号码scAddress
,短信中心的号码,null的话使用当前默认的短信服务中心text
,短信内容sentIntent
,短信发送状态deliveryIntent
,短信接收状态
发送短信
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(etPhone.getText().toString(), null, etMessage.getText().toString(),
PendingIntent.getBroadcast(this, 1, new Intent(ACTION_SEND_SMS), 0),
PendingIntent.getBroadcast(this, 2, new Intent(ACTION_DELIVERY_SMS), 0));
需要权限
<uses-permission android:name="android.permission.SEND_SMS" />
注册BroadcastReceiver
接收状态
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_SEND_SMS)) {
if (getResultCode() == RESULT_OK) {
Toast.makeText(SmsManageActivity.this, "Send SMS", Toast.LENGTH_LONG).show();
}
} else if (intent.getAction().equals(ACTION_DELIVERY_SMS)) {
if (getResultCode() == RESULT_OK) {
Toast.makeText(SmsManageActivity.this, "Delivery SMS", Toast.LENGTH_LONG).show();
}
}
}
};
调用系统发送短信
Uri uri= Uri.parse("smsto:10086");
Intent sms_intent = new Intent(Intent.ACTION_SENDTO, uri);
sms_intent.putExtra("sms_body", "HelloWorld");
startActivity(sms_intent);
2. 接收短信
注册BroadcastReceiver
接收短信,SmsMessage.createFromPdu(byte[])
获取短信内容。
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] objs = (Object[]) bundle.get("pdus");
for (int i = 0; i < objs.length; i++) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) objs[i]);
String phone = smsMessage.getDisplayOriginatingAddress();
String message = smsMessage.getDisplayMessageBody();
}
}
}
}
};
@Override
protected void onResume() {
super.onResume();
registerReceiver(broadcastReceiver, new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION));
registerReceiver(broadcastReceiver, new IntentFilter(ACTION_SEND_SMS));
registerReceiver(broadcastReceiver, new IntentFilter(ACTION_DELIVERY_SMS));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(broadcastReceiver);
}
需要权限
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
3. Emulator Control工具
选择模拟器右下角按钮【More】
选择【Phone】选项