发送短信:
想要发送和接收短信,首先要在AndroidManifest.xml里面配置以下权限:
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
方法一:调用系统短信界面发送短信
1.不指定收件人,但是指定短信内容。
要想调用系统发送短信界面后附加短信内容,只需在Intent中附带相关的参数就可以了。
Uri smsToUri = Uri.parse("smsto:");
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
//smsBody :短信内容
intent.putExtra("sms_body", smsBody);
startActivity(intent);
2.指定收件人,但不指定短信内容。
//phone :收件人
Uri smsToUri = Uri.parse("smsto:"+phone);
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
startActivity(intent);
或者:
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(Uri.parse("smsto:" + number));
startActivity(sendIntent)
3.同时指定收件人和短信内容。
//number :收件人
Uri smsToUri = Uri.parse("smsto:" + number);
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
//smsBody :短信内容
intent.putExtra("sms_body", smsBody);
startActivity(intent);
或者
Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(Uri.parse("smsto:" + number));
sendIntent.putExtra("sms_body", body);
startActivity(sendIntent);
方法二:不调用系统短信界面直接发短信。
SmsManager smsMgr = SmsManager.getDefault();
smsMgr.sendTextMessage(address, null, message, null, null);
其中参数说明:
sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress 发送短信的地址(也就是号码)
scAddress 短信服务中心,如果为null,就是用当前默认的短信服务中心
text 短信内容
sentIntent 如果不为null,当短信发送成功或者失败时,这个PendingIntent会被广播出去
成功的结果代码是Activity.RESULT_OK,
或者下面这些错误之一 :RESULT_ERROR_GENERIC_FAILURE,RESULT_ERROR_RADIO_OFF,RESULT_ERROR_NULL_PDU等
通俗点说: 发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号
--> 后续处理 即,这个意图包装了短信发送状态的信息
deliveryIntent 如果不为null,当这个短信发送到接收者那里,这个PendtingIntent会被广播
状态报告生成的pdu(指对等层次之间传递的数据单位)会拓展到数据("pdu")
通俗点就是:发送 -->中国电信 --> 中国电信发送成功 --> 返回对方是否收到这个信息 --> 后续处理
即:这个意图包装了短信是否被对方收到的状态信息(供应商已经发送成功,但是对方没有收到)。
发送邮件:
1.
Uri uri = Uri.parse("mailto:xxx@abc.com");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(it);
2.
Intent it = new Intent(Intent.ACTION_SEND);
it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.setType("text/plain");
startActivity(Intent.createChooser(it, "Choose Email Client"));
Intent it=new Intent(Intent.ACTION_SEND);
String[] tos={"me@abc.com"};
String[] ccs={"you@abc.com"};
it.putExtra(Intent.EXTRA_EMAIL, tos);
it.putExtra(Intent.EXTRA_CC, ccs);
it.putExtra(Intent.EXTRA_TEXT, "The email body text");
it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
it.setType("message/rfc822");
startActivity(Intent.createChooser(it, "Choose Email Client"));