赵工的个人空间


专业技术部分转网页计算转业余爱好部分


 手持终端

首页 > 专业技术 > 手持终端 > 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);
}
});
}
}

Copyright@dwenzhao.cn All Rights Reserved   备案号:粤ICP备15026949号
联系邮箱:dwenzhao@163.com  QQ:1608288659