【Android】Android 发送短信和打电话的方法
发送短信的方法
有两种方法可以实现发送短信,其一是使用intent-startActivity,URI数据格式为"smsto:num",调用的action为Intent.ACTION_SENDTO:

Uri uri = Uri.parse("smsto:5554");
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
it.putExtra("sms_body", "你好。。");
startActivity(it);
其二是使用SmsManager:
EditText num=(EditText)findViewById(R.id.num);
EditText content=(EditText)findViewById(R.id.content);
String mobile=num.getText().toString();
String smstext=content.getText().toString();
//获取SmsManager
SmsManager sms=SmsManager.getDefault();
//如果内容大于70字,则拆分为多条
List<String> texts=sms.divideMessage(smstext);
//逐条发送短信
for(String text:texts)
{
sms.sendTextMessage(mobile, null, text, null, null);
}
//发送结果提示
Toast.makeText(SendSMS.this, "发送成功", Toast.LENGTH_LONG).show();

二者的不同在于前者只是调用了发送界面,需要按下Send按钮短信才发送出去,而后者则是直接发送出去。
发送SMS权限的设置:
<uses-permission android:name="android.permission.SEND_SMS"/>
关于SmsManager
SDK中的介绍:Manages SMS operations such as sending data, text, and pdu SMS messages. Get this object by calling the static method SmsManager.getDefault().
方法:
public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
destinationAddress: 收件人地址
scAddress: 短信中心号码,null为默认中心号码
sentIntent: 当消息发出时,成功或者失败的信息报告通过PendingIntent来广播。如果该参数为空,则发信程序会被所有位置程序检查一遍,这样会导致发送时间延长。
deliveryIntent: 当消息发送到收件人时,该PendingIntent会被广播。pdu数据在状态报告的extended data ("pdu")中。
如果收件人或者信息为空则抛出 IllegalArgumentException 。
public ArrayList<String> divideMessage (String text)
将大于70字的短信分割为多条。
参数:text the original message. Must not be null.
返回:an ArrayList of strings that, in order, comprise the original message
sendDataMessage 参数与上类似,只是用于发送Data。
sendMultipartTextMessage发送多条短信,发送内容必须是用divideMessage分割好了的。
打电话的方法
打电话的方法类似,所不用的是URI格式为"tel:num",而调用的action为Intent.ACTION_CALL:
EditText edit=(EditText)findViewById(R.id.DialEdit);
String num=edit.getText().toString();
if((num!=null)&&(!"".equals(num.trim())))
{
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+num));
startActivity(intent);
}
打电话权限的设置:
<uses-permission android:name="android.permission.SEND_SMS"/>

向模拟器发短信打电话的方法
1.启动android emulator,查看标题栏找出端口。一般是android emulator (5554),其中5554就是端口。
2.打开命令行,输入telnet localhost 5554。程序将会连接到android console,返回
Android Console: type 'help' for a list of commands
OK
模拟电话打入gsm <call|accept|busy|cancel|data|hold|list|voice|status>
输入gsm call <模拟打进的电话号码>。如:
gsm call 15555218135
模拟短信发送sms send <senderPhoneNumber> <textmessage>
输入sms send <模拟发送短信的电话> <内容>。如:
sms send 15555218135 hello
其中,15555218135为模拟器手机号码。
【Android】Android 发送短信和打电话的方法的更多相关文章
- android之发送短信程序
首先改写activity_main.xml文件 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/re ...
- Android实现发短信与打电话的功能
//发短信 class SendMsgClickListener implements OnClickListener { public void onClick(View v) { //调用Andr ...
- Android 学习第13课,android 实现发送短信的功能
1. 界面布局 界面代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
- Android之发送短信和接收验证码
最近项目需求需要发送短信和接收验证码并将验证码显示在输入框中 以下是我的记录 前提---权限 <uses-permission android:name="andro ...
- Android SmsManager 发送短信
SmsManager可以在后台发送短信,无需用户操作,开发者就用这个SmsManager功能在后台偷偷给SP发短信,导致用户话费被扣.必须添加android.permission.SEND_SMS权限 ...
- Android之发送短信的两种方式
SMS涉及的主要类SmsManager 实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员. 公有方法: ArrayList< ...
- (转)Android之发送短信的两种方式
https://www.cnblogs.com/dongweiq/p/4866022.html if(TextUtils.isEmpty(number)||TextUtils.isEmpty(cont ...
- Android 中发送短信
import android.net.Uri; //调用Android系统API发送短信 Uri uri = Uri.parse("smsto:" + strSmsPhone_va ...
- android 60 发送短信
import android.os.Bundle; import android.app.Activity; import android.telephony.SmsManager; import a ...
随机推荐
- WPF教程二:布局之StackPanel面板
应用程序界面设计中,合理的元素布局至关重要,它可以方便用户使用,并将信息清晰合理地展现给用户.WPF提供了一套功能强大的工具-面板(Panel),来控制用户界面的布局.你可以使用这些面板控件来排布元素 ...
- Spark 快速理解
转自:http://blog.csdn.net/colorant/article/details/8255958 ==是什么 == 目标Scope(解决什么问题) 在大规模的特定数据集上的迭代运算或重 ...
- 登录centos虚拟机后显示-bash-4.1
http://zhidao.baidu.com/link?url=KwpGOdwFw1oxnL71pvPlfRgbRL_IuQeYRzIYJjiDb2SnX0dQye5yUXqHAGSyuD6u2nD ...
- php 连接数据库
连接数据库 <?php $con = mysql_connect("localhost","root","root"); if (!$ ...
- 如何查询表A中的某字段的值在表B中不存在?
1.测试表创建,插入数据: create table a (id int, name )); create table b (id int); ,'a'); ,'b'); ,'c'); ,'d'); ...
- 【转】@JoinColumn 详解
在address中没有特殊的注解. 在Person中对应到数据库里面就有一个指向Address的外键. 我们也可以增加注释指定外键的列的名字,如下:@OneToOne(cascade=CascadeT ...
- Android代码的几点小技巧
1)View的状态保存与恢复dispatchRestoreInstanceStateonRestoreInstanceStateonSaveInstanceState 2)Service的前台服务使 ...
- 【Java面试题】2 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析
/* * 问题:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变 * 答: * 使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的 ...
- Cookie文件格式解析
原文参考:http://blog.csdn.net/lixianlin/article/details/2738229 1.Cookie文件的实质 Cookie实际上是Web服务端与客户端(典型的是浏 ...
- 无法查找或打开 PDB 文件
emmmmmmmmmmmmm...建议:不用管!!! 参考: 在 Visual Studio 调试器中指定符号 (.pdb) 和源文件 https://msdn.microsoft.com/zh-cn ...