拨打电话有两个关键:
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");