021、拨打电话、发送短信和发送邮件
2013-09-27 21:52
363 查看
拨打电话有两个关键:
1、在AndroidManifest.xml中添加用户权限,
2、通过自定义Intent对象,带入“ACTION_CALL”这个关键(ACTION),以及通过Uri.parse()方法将用户输入的电话号码(Data)带入,最后以startActivity()方法完成直接拨打。
示例代码:
也可以选用 ACTION_DIAL,则不会直接拨打电话,而是把数据带到拨号界面,可让用户进行编辑或拨打。
也可以调用系统的拨号界面:
调用上面代码,则会进入通讯录里面,可点击拨打号码。
有关打电话的permission有以下两种:
a、android.permission.CALL_PHONE:允许程序传入电话拨号直接拨号,不需通过用户界面确认。
b、android.permission.CALL_PRIVILEGED:允许程序将电话号码传给拨号程序,需要用户确认后才会拨出号码。
发送短信:
发送短信的关键程序是通过SmsManager对象的sendTextMessage()方法来完成的,其中sendTextMessage()方法需要传入5个值,依次是收件人地址(String)、发送地址(String)、正文(String)、发送服务(PendingIntent)和送达服务(PendingIntent),其中收件人与正文是不可以为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的写法比较多,列举其中几种:
以上是只发送文字E-mail的,若要传送附有文件的E-mail,可以参考下列代码:
//添加SD卡里的音乐文件作为附件
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");
相关文章推荐
- 安装增强功能
- CWinAppEx::InitKeyboardManager
- 五款免费pdf转换成word软件
- 2013(秋季)CocoaChina开发者大会实录及PPT:《星计划——手游创新大赛颁奖》
- derby环境配置和coolsql的连接
- java.lang.ClassCastException: android.app.Application cannot be cast to serialport_api.sample.App问题
- 坠落凡间的struts2(3)---struts2的类型转换
- 纪念SlingShot 矩阵
- 高性能web开发如何加载JS,JS应该放置在什么位置
- 时钟(AnalogClock和DigitalClock)的功能与用法
- CWinAppEx::InitContextMenuManager
- poj 3368 Frequent values
- 阿拉伯文组合规则
- CoreAnimation编程指南(十)KVC
- lightoj 1032 数位DP
- ORACLE中关于OEM不能启动的问题
- 020、Linkify规则
- 基于LGPL开源项目 Log4cpp安装与使用
- POJ 1679 The Unique MST 次小生成树入门题
- ListView点击事件和Listview中的Button点击事件产生冲突