手持终端
Eclipse平台下Android开发环境的搭建
PhoneGap配置到Eclipse开发环境
使用PhoneGap开发Android应用程序
PhoneGap3.0以上版本配置到Eclipse开发环境
使用PhoneGap3.0版本开发Android应用程序
PhoneGap3.0的第三方Android插件
Cordova配置到Android Studio开发环境
Android系统基本架构
Android的字符串颜色图片样式
Android的常用控件及菜单
Android的消息提示及传递
Android系统的组件通信
Android系统的Service
Android的广播消息接收
Android的数据存储与访问
Android系统的网络应用
Android图形图像处理
Android的Fragment框架
Android系统的并发编程
Java源文件结构与保留字
Java语言的数据类型与变量
Java的运算符与流程控制
Java语言的数组及操作
Java面向对象编程
Java的常用类
Android开发常用工具及命令
Android应用程序权限管理
Android系统提供的R类内置资源
Android系统的控件类及其方法
Android系统的菜单类及其方法
Android系统的对话框
Android应用程序模型及组件
Android的绘图类及方法
Android系统的动画效果
Android的数据库操作
Android的多媒体功能
Android系统照相机的使用
Android的文本朗读TTS
获取Android系统信息
Android系统的电话操作
Android系统的定位
Android系统的传感器
Android系统最初的目标就是开放的移动通信系统,因此电话功能是Android系统的一个最基本功能。Android系统提供了完整的电话操作,目前支持gsm和cdma类型的手机,还支持相应的3G。android.telephony.gsm软件包适用于gsm类型的手机,android.telephony.cdma软件包适用于cdma类型的手机。后来,Android系统提供了统一的android.telephony软件包统一管理gsm和cdma手机的电话操作,通过该软件包中的方法,应用程序可以进行电话管理、获取信号强度、了解服务状态、发送短信等。
1.TelephonyManager类:电话管理
在Android系统中,通过TelephonyManager类进行基本的电话功能管理。TelephonyManager类主要提供了一系列用于访问与手机通信相关的状态和信息的方法,其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息等。在应用程序中可以使用这些方法获取相关数据,从而实现用户绑定或者SIM绑定的功能。
TelephonyManager类的对象需要通过Context.getSystemService(Context.TELEPHONY _SERVICE)方法来获得,有些方法还需要应用程序获取相应的权限。
1)getCallState方法:获取电话状态
该方法用于获取Android的电话状态,如空闲、响铃、摘机状态。当没有电话操作时,返回CALL_STATE_IDLE;当有电话打进来时,返回CALL_STATE_RINGING;当接听电话后,返回CALL_STATE_OFFHOOK。此方法是应用程序获知Android电话状态的主要途径。语法格式:
public int getCallState()
示例:
public class firstActivity extends Activity{
TelephonyManager Tel;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1=(Button)findViewById(R.id.button1);
Tel=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
btn1.setOnClickListenter(new View.OnClickListener(){
@Override
public void onClick(View v){
int state;
state=Tel.getCallState();
switch(state){
case TelephonyManager.CALL_STATE_IDLE:
Toast.makeText(getApplicationContext(),"空闲状态!",
Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_RINGING:
Toast.makeText(getApplicationContext(),"响铃,有电话进来!",
Toast.LENGTH_LONG).show();
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Toast.makeText(getApplicationContext(),"摘机,正在接听电话!",
Toast.LENGTH_LONG).show();
break;
default:
;
}
}
});
}
}
为了使用电话操作功能,需要在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2)getDeviceId方法:获取设备Id
该方法用于获取Android手机的唯一设备Id。对于GSM手机,就是IMEI编号;对CDMA手机,就是MEID编号。如果设备Id不可用,则返回null。收费软件往往使用该方法来标识手机设备已经购买了软件。IMEI是国际移动设备标识International Mobile Equipment Identify的简称,是由15位数字组成的电子串号,与每台手机一一对应,该码是全世界唯一的。其中前6位是型号核准号码TAC,一般代表机型;接着2位是最后装备号FAC,一般代表产地;之后的6位是串号SNR,一般代表生产顺序号;最后1位为检验码SP,一般为0,备用。语法格式:
public String getDeviceId()
3)getDeviceSoftwareVersion方法:获取软件版本号
该方法用于获取Android手机的软件版本号。对于GSM手机来说,就是IMEI/SV编号,如果设置ID不可用则返回null。该方法用途广泛,应用程序可以通过该方法获取手机软件版本信息以供分析。语法格式:
public String getDeviceSoftwareVersion()
4)getLine1Number方法:获取本机号码
该方法用于获取Android手机线路1的手机号码。对于GSM手机就是MSISDN号码,如果设备不可用则返回null。该方法用途比较广泛,应用程序可以通过该方法获取本机号码。语法格式:
public String getLine1Number()
5)getNetworkCountryIso方法:获取国家码
该方法用于获取Android手机的ISO标准国家码,也就是对应的国际长途区号。该方法仅在用户将手机在网络上注册之后才会有效。对CDMA手机来说,这种方法获取的信息并不可靠,可以采用getPhoneType方法来获取。语法格式:
public String getNetworkCountryIso()
6)getNetworkOperator方法:获取网络操作号
该方法用于获取Android手机的网络操作号,返回的结果为MCC+MNC,其中MCC为国家码,MNC为网络码。该方法仅在用户将手机在网络上注册后才会有效。对CDMA手机来说,这种方法获取的信息并不可靠,可以采用getPhoneType方法来获取。语法格式:
public String getNetworkOperator()
7)getNetworkType方法:获取网络类型
该方法用于获取Android手机的网络类型。Android系统支持多种网络类型,各种网络类型取值为:
·NETWORK_TYPE_UNKNOWN:网络类型未知
·NETWORK_TYPE_GPRS:GPRS网络
·NETWORK_TYPE_EDGE:EDGA网络
·NETWORK_TYPE_UMTS:UMTS网络
·NETWORK_TYPE_HSDPA:HSDPA网络
·NETWORK_TYPE_HSUPA:HSUPA网络
·NETWORK_TYPE_HSPA:HSPA网络
·NETWORK_TYPE_CDMA:CDMA网络
·NETWORK_TYPE_EVDO_0:EVDO网络,revision 0
·NETWORK_TYPE_EVDO_A:EVDO网络,revision A
·NETWORK_TYPE_1xRTT:1xRTT网络
语法格式:
public int getNetworkType()
8)getPhoneType方法:获取手机类型
该方法用于获取Android手机的类型,其实就是网络类型。目前大致可以分为3类,GSM手机、CDMA手机、SIP手机。Android系统支持的手机类型取值为:
·PHONE_TYPE_NONE:未知类型
·PHONE_TYPE_GSM:GSM手机
·PHONE_TYPE_CDMA:CDMA手机
·PHONE_TYPE_SIP:SIP手机
语法格式:
public int getPhoneType()
9)getSimCountryIso方法:获取SIM卡的国家码
该方法用于获取Android手机的ISO国家码,也就是SIM卡的国家码。语法格式:
public String getSimCountryIso()
10)getSimState方法:获取SIM的状态信息
该方法用于获取Android手机上的SIM卡的状态信息,包括是否插卡、是否锁定、是否就绪等。Android系统支持的SIM状态为:
·SIM_STATE_UNKNOWN:未知状态
·SIM_STATE_ABSENT:没插卡
·SIM_STATE_PIN_REQUIRED:锁定状态,需要用户的PIN码解锁
·SIM_STATE_PUK_REQUIRED:锁定状态,需要用户的PUK码解锁
·SIM_STATE_NETWORK_LOCKED:锁定状态,需要网络的PIN码解锁
·SIM_STATE_READY:就绪状态
语法格式:
public int getSimState()
11)getSimOperator方法:获取SIM卡的操作码
该方法用于获取Android手机上SIM卡的操作码,所谓操作码是指SIM卡提供的移动国家码和移动网络码的组合(MCC+MNC),一般为5位或者6位的十进制数字。调用该方法之前,SIM卡的状态必须是SIM_STATE_READY。语法格式:
public String getSimOperator()
12)getSimOperatorName方法:获取服务商
该方法用于获取Android手机的服务商名称SPN,也就是手机信号提供方,不同国家的服务商不同。在调用该方法之前,SIM卡的状态必须是SIM_STATE_READY。语法格式:
public String getSimOperatorName()
13)getSimSerialNumber方法:获取SIM卡的序列号
该方法用于获取Android手机SIM卡的序列号,返回值为String字符串类型。在有些时候绑定用户SIM的应用中,可以使用该方法获取SIM卡的序列号,并进行判断。在调用该方法之前,SIM卡的状态必须是SIM_STATE_READY。语法格式:
public String getSimSerialNumber()
14)getSubscriberId方法:获取用户唯一Id
该方法用于获取Android手机用户的唯一Id,返回值为String字符串类型。对于GSM类型手机,该用户唯一Id就是IMSI码(国际移动用户识别码)。在调用该方法之前,SIM卡的状态必须是SIM_STATE_READY。语法格式:
public String getSubscriberId()
15)getVoiceMailAlphaTag方法:获取语音邮件识别码
该方法用于获取Android手机用户的语音邮件识别码,也就是与语音邮件相关的标签。在有些需要设计手机语音邮件的应用中,可以使用该方法获取语音邮件识别码,并进行判断。在调用该方法之前,SIM卡的状态必须是SIM_STATE_READY。语法格式:
public String getVoiceMailAlphaTag()
16)hasIccCard方法:ICC卡是否存在
该方法用于检测Android手机上是否存在ICC卡,如果存在则返回true,否则将返回false。该方法主要用于设计ICC卡的一些操作之前,首先判断ICC卡是否存在。语法格式:
public boolean hasIccCard()
17)isNetworkRoaming方法:获取漫游状态
该方法用于检测Android手机是否处于漫游状态。如果处于漫游状态则返回true,否则返回false。该方法主要检测Android手机的漫游状态,程序开发者据此来进行处理,以达到节省用户通信费用的目的。只有用户在网络上注册之后才能够调用该方法。语法格式:
public boolean isNetworkRoaming()
18)getVoiceMailNumber方法:获取语音邮件号码
该方法用于获取Android手机的语音邮件号码,也就是语音邮件对应的号码,返回值为String字符串类型。在一些设计语音邮件操作的场合,可以调用该方法首先获取语音邮件号码,然后进行后续的操作。语法格式:
public String getVoiceMailNumber()
19)getDataState方法:获取数据连接状态
该方法用于获取Android手机的数据连接状态,也就是是否可以上网。通过该方法,可以获知Android手机是否能够联网。Android系统提供的数据连接系统包括以下几种:
·DATA_CONNECTED:数据连接状态为已连接
·DATA_CONNECTING:数据连接状态为正在连接
·DATA_DISCONNECTED:数据连接状态为断开
·DATA_SUSPENDED:数据连接状态为暂停
语法格式:
public int getDataState()
20)getDataActivity方法:获取数据活动状态
该方法用于获取Android手机的数据活动状态,也就是是否正在从网络上下载数据或者发送数据。通过该方法,可以获知Android手机是否正在有流量。Android系统提供的数据活动状态有以下几种:
·DATA_ACTIVITY_IN:数据连接状态为活动,正在接受数据
·DATA_ACTIVITY_OUT:数据连接状态为活动,正在发送数据
·DATA_ACTIVITY_INOUT:数据连接状态为活动,正在接受和发送数据
·DATA_ACTIVITY_NONE:数据连接状态为活动,但无数据发送和接受
2.SignalStrength类:信号强度
在Android系统中,通过SignalStrength类可以获取Android手机的信号强度。Android系统通过这个类可以获取GSM、CDMA和EVDO信号的各种强度参数,这都需要手机支持。通过这个类的方法可以获取误码率、信号强度、信噪比和导频信号水平等信息。
在使用SignalStrength类中的方法时,需要程序获取如下的权限才可以正常调用:
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
1)isGsm方法:判断是否为GSM
该方法用于检测Android手机信号是否为GSM类型,如果是则返回true,否则返回false。在SignalStrength类中,支持GSM、CDMA和EVDO类型的信号。一般在使用时首先需要使用该方法来判断是哪种类型的信号,然后分别调用不同的方法来获取信号强度。语法格式:
public boolean isGsm()
示例:
public class firstActivity extends Activity{
TelephonyManager Tel;
MyPhoneStateListener MyListener;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1=(Button)findViewById(R.id.button1);
Tel=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
MyListener=new MyPhoneStateListener();
Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
btn1.setOnClickListenter(new View.OnClickListener(){
@Override
public void onClick(View v){
Tel.listen(MyListener,PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
});
}
private class MyPhoneStateListener extends PhoneStateListener{
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength){
super.onSignalStrengthsChanged(signalStrength);
if(signalStrength.isGsm()){
Toast.makeText(getApplicationContext(),"GSM类型!",
Toast.LENGTH_LONG).show();
}else{
Toast.makeText(getApplicationContext(),"CDMA或EVDO类型!",
Toast.LENGTH_LONG).show();
}
}
};
}
2)getGsmBitErrorRate方法:获取误码率
该方法用于获取Android手机信号的误码率,该方法仅适用于GSM类型的信号。getGsmBitErrorRate方法的返回值符合TS 27.007 8.5标准的规定,取值范围为0~7,如果发生错误将返回-1。语法格式:
public int getGsmBitErrorRate()
3)getGsmSignalStrength方法:获取信号强度
该方法用于获取Android手机信号的强度,该方法仅适用于GSM类型的信号。getGsmSignalStrength方法的返回值符合TS 27.007 8.5标准的规定,取值范围为0~31,如果发生错误将返回-1。语法格式:
public int getGsmSignalStrength()
4)getCdmaDbm方法:获取CDMA信号的接收强度
该方法用于获取Android手机CDMA信号的接收强度,该方法仅适用于CDMA类型的信号。所谓的接收强度是指RSSI(Received Signal Strength Indicator),单位是dBm。语法格式:
public int getCdmaDbm()
5)getCdmaEcio方法:获取CDMA信号的导频信号水平
该方法用于获取Android手机的CDMA信号的导频信号水平,该方法仅适用于CDMA类型的信号。所谓导频信号水平是指Ec/Io,单位是dB。导频信号水平体现了所接收信号的强度和邻小区干扰水平的比值。手机开机首先做的事情就是搜索导频信号,如果搜索不到有用的导频信号,手机就无法正确识别网络。语法格式:
public int getCdmaEcio()
6)getEvdoDbm方法:获取EVDO信号的接收强度
该方法用于获取Android手机EVDO信号的接收强度,该方法仅适用于EVDO类型的信号。所谓接收强度是指RSSI(Received Signal Strength Indicator),单位是dBm。语法格式:
public int getEvdoDbm()
7)getEvdoEcio方法:获取EVDO信号的导频信号水平
该方法用于获取Android手机EVDO信号的导频信号水平,该方法仅适用于EVDO类型的信号。所谓的导频信号水平是指Ec/Io,单位是dB。导频信号水平体现了所接收信号的强度和邻小区干扰水平的比值。手机开机首先做的事情就是搜索导频信号,如果搜索不到有用的导频信号,手机就无法正确识别网络。语法格式:
public int getEvdoEcio()
8)getEvdoSnr方法:获取EVDO信号的信噪比
该方法用于获取Android手机EVDO信号的信噪比,该方法仅适用于EVDO类型的信号。所谓信噪比是指输出信号的电压与同时输出的噪声电压的比,常常用分贝数表示。该函数返回值的取值范围为0~8,8为最大值。语法格式:
public int getEvdoSnr()
3.ServiceState类:服务状态
ServiceState类为Android系统的手机提供了获取和设置服务状态的能力。通过ServiceState类中的一系列方法,可以在程序中获取手机的运营商服务状态、是否漫游和运营商信息等很多内容。手机制造商广泛使用这些方法向用户显示运营商的服务状态信息。
1)setState方法:设置手机的服务状态
该方法用于设置Android手机的服务状态。Android系统提供了4种服务状态,可以通过参数传递进行设置。该方法常用于根据程序需要来更改手机电话服务的场合。语法格式:
public void setState(int state)
其中,参数state表示服务状态。Android系统提供了4种取值:
·STATE_IN_SERVICE:正常运行状态,手机已注册。
·STATE_POWER_OFF:电话断电。
·STATE_EMERGENCY_ONLY:手机已锁定,只能拨打紧急电话号码。
·STATE_OUT_OF_SERVICE:手机没有向任何运营商注册,可能正在搜索新的运营商登记,或没有搜索到所有登记,或登记被拒绝,或者是不可用的无线电信号。
2)setStateOff方法:关闭服务
该方法用于关闭Android手机的服务,此时手机将无法执行拨打电话等与通信有关的操作。语法格式:
public void setStateOff()
示例:
public class firstActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1=(Button)findViewById(R.id.button1);
final ServiceState ss=new ServiceState();
btn1.setOnClickListenter(new View.OnClickListener(){
@Override
public void onClick(View v){
ss.setStateOff();
Toast.makeText(getApplicationContext(),"关闭服务!",
Toast.LENGTH_LONG).show();}
});
}
}
3)setStateOutOfService方法:设置无服务
该方法用于设置Android手机为无服务,此时手机未向运营商注册,将无法执行拨打电话等与通信有关的操作。语法格式:
public void setStateOutOfService()
4)getState方法:获取服务状态
该方法用于获取Android手机的服务状态,Android系统支持的4种服务状态可以参考前述内容。通过该方法,程序可以实时掌握手机的服务状态,以便根据服务状态来优化操作。语法格式:
public int getState()
5)setRoaming方法:设置漫游状态
该方法用于设置Android手机是否处于漫游状态。漫游指的是手机用户在离开本地区或本国时,仍可以在其他一些地区或国家继续使用他们的手机。程序中往往需要结合运营商提供的信息来进行设置。语法格式:
public void setRoaming(boolean roaming)
其中,参数roaming表示是否处于漫游状态,true表示漫游状态,false表示非漫游状态。
6)getRoaming方法:获取漫游状态
该方法用于获取Android手机当前是否处于漫游状态,如果返回值为true则表示漫游状态,如果返回值为false表示非漫游。在程序中,通过该方法可以了解用户的漫游状态,从而选择合适的方式帮助用户节省通信费用。语法格式:
public boolean getRoaming()
7)setOperatorName方法:设置运营商名称
该方法用于设置Android手机的运营商名称,可以设置长名称、短名称和运营商代码等信息。该方法往往被运营商定制手机时所使用,可以在手机上显示运营商的名称。语法格式:
public void setOperatorName(String longName,String shortName,String numeric)
其中,参数longName为运营商的长名称,最多16个字符;shortName为运营商的短名称,最多8个字符;numeric为运营商代码,包括3位国家码,2~3位网络码。
8)getOperatorAlphaLong方法:获取运营商名称
该方法用于获取Android手机的运营商名称,这个名称是全称,最多为16个字符。通过该方法,可以在应用程序中显示运营商的全称。语法格式:
public String getOperatorAlphaLong()
9)getOperatorAlphaShort方法:获取运营商简称
该方法用于获取Android手机的运营商的简称,最多为8个字符。通过该方法,可以在应用程序中显示运营商的简称。语法格式:
public String getOperatorAlphaShort()
10)getOperatorAlphaNumeric方法:获取运营商代码
该方法用于获取Android手机的运营商代码,包括3位国家码,2~3位网络码。中国大陆的国家码为460,中国移动的网络码为00和02,中国联通的网络码为01,中国电信的网络码为03。语法格式:
public String getOperatorAlphaNumeric()
11)setIsManualSelection:设置手动选择网络
该方法用于设置Android手机选择运营商网络的方式。如果输入参数为true,则表示采用手动选择运营商网络方式;如果输入参数为false,则表示采用自动选择运营商网络方式。语法格式:
public void setIsManualSelection(boolean isManual)
其中,参数isManual表示是否采用手动选择运营商网络方式,如果为true则表示采用手动选择运营商网络方式,否则表示采用自动选择运营商网络方式。
12)getIsManualSelection方法:是否手动选择网络
该方法用于获取Android手机当前选择运营商网络的方式,如果返回值为true则表示采用手动选择运营商网络方式,如果返回值为false则表示采用自动选择运营商网络方式。语法格式:
public boolean getIsManualSelection()
4.SmsManager类:短消息管理
短消息服务是手机的一项重要功能,Android系统通过SmsManager类来完成短消息的发送。一般来说,一条短信最多可以发送160个字符。SmsManager类提供了单独的短信发送函数,同时还可以对一些内容比较长的短信进行分割,并逐个发送。许多短信类应用程序都是使用SmsManager类中的方法来实现的。
1)sendTextMessage方法:发送短信
该方法用于通过Android手机发送一条短信,通过指定目标地址、信息内容等参数来实现。这是Android系统发送短信最常用的方法,被广泛应用于各类短信类应用程序中。语法格式:
public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
其中,参数destinationAddress为短消息的目标地址;scAddress为服务中心的地址,如果使用默认的SMSC则可以为空;text为短消息内容;sentIntent为消息发送成功或失败时发出广播的PendingIntent,如果发送成功结果码为Activity.RESULT_OK,如果发送失败结果码为RESULT_ERROR_GENERIC_FAILURE、RESULT_ERROR_RADIO_OFF、RESULT _ERROR_NULL_PDU之一,该参数也可以简单地置为null,调用者将检测所有未知的应用程序,这将导致在检测的时候发送较小数量的SMS;deliveryIntent为当消息成功发送到接收者时发出广播的PendingIntent,也可以简单地置为null。示例:
public class firstActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1=(Button)findViewById(R.id.button1);
final EditText1 et1=(EditText)findViewById(R.id.editText1);
final EditText1 et2=(EditText)findViewById(R.id.editText2);
et1.setText("");
et2.setText("");
btn1.setOnClickListenter(new View.OnClickListener(){
@Override
public void onClick(View v){
SmsManager sms=SmsManager.getDefault();
String desnum=et1.getText().toString();
String str=et2.getText().toString();
PendingIntent mPI=PendingIntent.getBroadcast(firstActivity.this,0,
new Intent(),0);
sms.sendTextMessage(desnum,null,str,mPI,null);
}
});
}
}
Android模拟器可以模拟短信的发送和接收,但需要通过两个模拟器来实现。
2)divideMessage方法:分割短信
该方法用于将一条比较长的短信内容分割成允许的短信长度。SMS消息一般限制在160个字符,所以更大的消息需要分解成一系列细小部分。divideMessage方法就是将一个长字符串分解成一个消息数组,其中的每个字符串都小于允许的长度。使用divideMessage方法分割的消息数组,需要使用sendMultipartTextMessage方法来发送。语法格式:
public ArrayList<String> divideMessage(String text)
其中,参数text为需要发送的短信内容。
3)sendMultipartTextMessage方法:发送多条短信
该方法用于发送多条短信,短信的内容数组是由divideMessage方法分割之后得到的。该方法也比较常用,当用户写的内容比较多时可以实现自动分割短信并发送的功能。当内容少于160个字符时将自动按照一条短信发送。语法格式:
public void sendMultipartTextMessage (String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents)
其中,参数destinationAddress为短消息的目标地址;scAddress为服务中心的地址,如果使用当前默认的SMSC则可以为空;parts为短消息数组,由divideMessage方法分割获取;sentIntents为PendingIntent数组,当消息发送成功或失败时,该PendingIntent就发出广播。如果发送成功结果码为Activity.RESULT_OK,如果发送失败结果码为RESULT_ERROR _GENERIC_FAILURE、RESULT_ERROR_RADIO_OFF、RESULT_ERROR_NULL_PDU之一,该参数也可以简单地置为null,调用者将检测所有未知的应用程序,这将导致在检测的时候发送较小数量的SMS;deliveryIntent为PendingIntent数组,当消息成功发送到接收者时该PendingIntent就发出广播,也可以简单地置为null。示例:
public class firstActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1=(Button)findViewById(R.id.button1);
final EditText1 et1=(EditText)findViewById(R.id.editText1);
final EditText1 et2=(EditText)findViewById(R.id.editText2);
et1.setText("");
et2.setText("");
btn1.setOnClickListenter(new View.OnClickListener(){
@Override
public void onClick(View v){
SmsManager sms=SmsManager.getDefault();
String desnum=et1.getText().toString();
String str=et2.getText().toString();
ArrayList<String> smsList=sms.divideMessage(str);
PendingIntent mPI=PendingIntent.getBroadcast(firstActivity.this,0,
new Intent(),0);
ArrayList<PendingIntent> sentIntents=new ArrayList<PendingIntent>();
for(int i=0;i<smsList.size();i++){
sentIntents.add(mPI);
}
sms.sendMultipartTextMessage(desnum,null,smsList,sentIntent,null);
}
});
}
}