您的位置:首页 > 其它

021、拨打电话、发送短信和发送邮件

2013-09-27 21:52 363 查看
拨打电话有两个关键:
1、在AndroidManifest.xml中添加用户权限,

<uses-permission android:name="android.permission.CALL_PHONE"/>


2、通过自定义Intent对象,带入“ACTION_CALL”这个关键(ACTION),以及通过Uri.parse()方法将用户输入的电话号码(Data)带入,最后以startActivity()方法完成直接拨打。
示例代码:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+phone));
startActivity(intent);


也可以选用 ACTION_DIAL,则不会直接拨打电话,而是把数据带到拨号界面,可让用户进行编辑或拨打。
也可以调用系统的拨号界面:

Intent intent = new Intent(Intent.ACTION_CALL_BUTTON);
startActivity(intent);


调用上面代码,则会进入通讯录里面,可点击拨打号码。

有关打电话的permission有以下两种:
a、android.permission.CALL_PHONE:允许程序传入电话拨号直接拨号,不需通过用户界面确认。
b、android.permission.CALL_PRIVILEGED:允许程序将电话号码传给拨号程序,需要用户确认后才会拨出号码。

发送短信:
发送短信的关键程序是通过SmsManager对象的sendTextMessage()方法来完成的,其中sendTextMessage()方法需要传入5个值,依次是收件人地址(String)、发送地址(String)、正文(String)、发送服务(PendingIntent)和送达服务(PendingIntent),其中收件人与正文是不可以为null的。

PendingIntent intent = PendingIntent.getBroadcast(
MainActivity.this, 0, new Intent(), 0);
SmsManager.getDefault().sendTextMessage(phone, null, conent,
intent, null);


SmsManager里面有一个公共的方法,divideMessage(String text) ,当字数超过上限时,会自动被拆分成数条短信,返回值为ArrayList类型,再通过sendTextMessage做循环的发送即可。

发送邮件:
在Android上发送E-mail是通过其内置的Gmail程序,而非SMTP的Protocol。
需构建Intent来发送E-mail,使用setType()来决定E-mail的格式,使用putExtra()来置入寄件人(EXTRA_E-MAIL)、主题(EXTRA_SUBJECT)、邮件内容(EXTRA_TEXT)以及其他E-mail的字段(EXTRA_CC、EXTRA_BCC)
发送的E-mail的写法比较多,列举其中几种:

1、
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { addressee });
intent.putExtra(Intent.EXTRA_CC, new String[] { et_transcript
.getText().toString() });
intent.putExtra(Intent.EXTRA_SUBJECT, et_theme.getText()
.toString());
intent.putExtra(Intent.EXTRA_TEXT, et_content.getText()
.toString());
startActivity(Intent.createChooser(intent, getResources()
.getString(R.string.str_message)));
2、
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"+addressee));
intent.putExtra(Intent.EXTRA_TEXT, et_content.getText()
.toString());
startActivity(intent);

3、
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, new String[] { addressee });
intent.putExtra(Intent.EXTRA_CC, new String[] { et_transcript
.getText().toString() });
intent.putExtra(Intent.EXTRA_TEXT, et_content.getText()
.toString());
intent.putExtra(Intent.EXTRA_SUBJECT, et_theme.getText()
.toString());
intent.setType("message/rfc822");
startActivity(Intent.createChooser(intent, getResources()
.getString(R.string.str_message)));


以上是只发送文字E-mail的,若要传送附有文件的E-mail,可以参考下列代码:

//添加SD卡里的音乐文件作为附件

intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/foo.mp3");
intent.setType("audio/mp3");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: