安卓简单发送短信小程序.docx
《安卓简单发送短信小程序.docx》由会员分享,可在线阅读,更多相关《安卓简单发送短信小程序.docx(11页珍藏版)》请在冰豆网上搜索。
![安卓简单发送短信小程序.docx](https://file1.bdocx.com/fileroot1/2022-11/20/6942a90f-0123-48be-83eb-ec0eff32895d/6942a90f-0123-48be-83eb-ec0eff32895d1.gif)
安卓简单发送短信小程序
简单安卓发送短信小程序
1、新建安卓项目:
2、生成一个项目之后在SRC文件夹中的包中自动生成的Action中写代码:
代码如下:
(注释写的很详细,自己看一下吧)
packagecom.sms;
importandroid.app.Activity;
/*必需引用PendingIntent类才能使用getBrocast()*/
importandroid.app.PendingIntent;
importandroid.content.Intent;
importandroid.os.Bundle;
/*必需引用telephony.gsm.SmsManager类才能使用sendTextMessage()*/
importandroid.telephony.SmsManager;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.Toast;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassSend_smsActivityextendsActivity
{
/*声明变量一个Button与两个EditText*/
privateButtonmButton1;
privateEditTextmEditText1;
privateEditTextmEditText2;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*透过findViewById建构子来建构EditText1,EditText2与Button对象*/
mEditText1=(EditText)(EditText)this.findViewById(R.id.mEditText1);
mEditText2=(EditText)(EditText)this.findViewById(R.id.mEditText2);
mButton1=(Button)(Button)this.findViewById(R.id.mButton1);
/*将默认文字加载EditText中*/
mEditText1.setText("请输入电话号码");
mEditText2.setText("请输入短信内容!
!
");
/*设定onClickListener让使用者点选EditText时做出反应*/
mEditText1.setOnClickListener(newEditText.OnClickListener()
{
publicvoidonClick(Viewv)
{
/*点选EditText时清空内文*/
mEditText1.setText("");
}
});
/*设定onClickListener让使用者点选EditText时做出反应*/
mEditText2.setOnClickListener(newEditText.OnClickListener()
{
publicvoidonClick(Viewv)
{
/*点选EditText时清空内文*/
mEditText2.setText("");
}
});
/*设定onClickListener让使用者点选Button时做出反应*/
mButton1.setOnClickListener(newButton.OnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
/*由EditText1取得简讯收件人电话*/
StringstrDestAddress=mEditText1.getText().toString();
/*由EditText2取得简讯文字内容*/
StringstrMessage=mEditText2.getText().toString();
/*建构一取得defaultinstance的SmsManager对象*/
SmsManagersmsManager=SmsManager.getDefault();
//TODOAuto-generatedmethodstub
/*检查收件人电话格式与简讯字数是否超过70字符*/
if(isPhoneNumberValid(strDestAddress)==true&&iswithin70(strMessage)==true)
{
try
{
/*两个条件都检查通过的情况下,发送简讯*
*先建构一PendingIntent对象并使用getBroadcast()方法进行Broadcast*
*将PendingIntent,电话,简讯文字等参数传入sendTextMessage()方法发送简讯*/
//SmsManagermanager=SmsManager.getDefault();
//smsManager.sendTextMessage("10086",null,"hi,thisissms",null,null);
PendingIntentmPI=PendingIntent.getBroadcast(Send_smsActivity.this,0,newIntent(),0);
smsManager.sendTextMessage(strDestAddress,null,strMessage,mPI,null);//
//smsManager.sendTextMessage("10086",null,"hi,thisissms",mPI,null);
}
catch(Exceptione)
{
e.printStackTrace();
}
Toast.makeText(Send_smsActivity.this,"duanxin成功!
!
",Toast.LENGTH_SHORT).show();
//mEditText1.setText("");
//mEditText2.setText("");
}
/*电话格式与简讯文字不符合条件时,使用Toast告知用户检查*/
else
{
/*电话格式不符*/
if(isPhoneNumberValid(strDestAddress)==false)
{
/*且字数超过70字符*/
if(iswithin70(strMessage)==false)
{
Toast.makeText(Send_smsActivity.this,"电话号码格式错误+短信内容超过70字,请检查!
!
",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(Send_smsActivity.this,"电话号码格式错误,请检查!
!
",Toast.LENGTH_SHORT).show();
}
}
/*字数超过70字符*/
elseif(iswithin70(strMessage)==false)
{
Toast.makeText(Send_smsActivity.this,"短信内容超过70字,请删除部分内容!
!
",Toast.LENGTH_SHORT).show();
}
}
}
});
}
/*检查字符串是否为电话号码的方法,并回传trueorfalse的判断值*/
publicstaticbooleanisPhoneNumberValid(StringphoneNumber)
{
booleanisValid=false;
/*可接受的电话格式有:
*^\\(?
:
可以使用"("作为开头*(\\d{3}):
*紧接着三个数字*\\)?
:
可以使用")"接续*[-]?
:
*在上述格式后可以使用具选择性的"-".*(\\d{3}):
*再紧接着三个数字*[-]?
:
*可以使用具选择性的"-"接续.*(\\d{4})$:
*以四个数字结束.*可以比对下列数字格式:
**(123)456-7890,123-456-7890,1234567890,(123)-456-7890*/
Stringexpression="1[0-9]{10}";
/*可接受的电话格式有:
*^\\(?
:
*可以使用"("作为开头*(\\d{2}):
*紧接着两个数字*\\)?
:
可以使用")"接续*[-]?
:
*在上述格式后可以使用具选择性的"-".*(\\d{4}):
*再紧接着四个数字*[-]?
:
*可以使用具选择性的"-"接续.*(\\d{4})$:
*以四个数字结束.*可以比对下列数字格式:
*
*(123)456-7890,123-456-7890,1234567890,(123)-456-7890*/
Stringexpression2="1[0-9]{10}";
CharSequenceinputStr=phoneNumber;
/*建立Pattern*/Patternpattern=Ppile(expression);
/*将Pattern以参数传入Matcher作Regularexpression*/
Matchermatcher=pattern.matcher(inputStr);
/*建立Pattern2*/Patternpattern2=Ppile(expression2);
/*将Pattern2以参数传入Matcher2作Regularexpression*/
Matchermatcher2=pattern2.matcher(inputStr);
if(matcher.matches()||matcher2.matches())
{
isValid=true;
}
returnisValid;
}
publicstaticbooleaniswithin70(Stringtext)
{
if(text.length()<=70)
returntrue;
else
returnfalse;
}
}
其中调用系统发送短信的代码如下:
PendingIntentmPI=PendingIntent.getBroadcast(Send_smsActivity.this,0,newIntent(),0);
smsManager.sendTextMessage(strDestAddress,null,strMessage,mPI,null);
其中sendTextMessage方法:
sendTextMessage(destinationAddress,scAddress,text,sentIntent,deliveryIntent)
destinationAddress:
收件人号码
scAddress:
短信中心服务号码,这里设置为null
text:
发送内容
sentIntent:
发送短信结果状态信号(是否成功发送),new一个Intent,操作系统接收到信号后将广播这个Intent.此过程为异步.
deliveryIntent:
对方接收状态信号(是否已成功接收).
在gen文件夹中的R方法代码如下
(注意:
这个方法代码是自动生成的,在主方法中引用R包后就可以调用,其作用有点类似于jsp中的配置文件)
packagecom.sms;
publicfinalclassR{
publicstaticfinalclassattr{
}
publicstaticfinalclassdrawable{
publicstaticfinalintic_launcher=0x7f020000;
}
publicstaticfinalclassid{
publicstaticfinalintmButton1=0x7f050004;
publicstaticfinalintmEditText1=0x7f050001;
publicstaticfinalintmEditText2=0x7f050003;
publicstaticfinalinttextView1=0x7f050000;
publicstaticfinalinttextView3=0x7f050002;
}
publicstaticfinalclasslayout{
publicstaticfinalintmain=0x7f030000;
}
publicstaticfinalclassstring{
publicstaticfinalintapp_name=0x7f040001;
publicstaticfinalinthello=0x7f040000;
}
}
最重要的是在项目根目录下的AndroidManifest.XML文件中要添加上一句:
name="android.permission.SEND_SMS"/>
这句话的作用是调用系统发送短信的权限
我的全部代码如下:
xmlversion="1.0"encoding="utf-8"?
>
android="
package="com.sms"
android:
versionCode="1"
android:
versionName="1.0">
minSdkVersion="8"/>
android:
icon="@drawable/ic_launcher"
android:
label="@string/app_name">
android:
name=".Send_smsActivity"
android:
label="@string/app_name">
name="android.intent.action.MAIN"/>
name="android.intent.category.LAUNCHER"/>
name="android.permission.SEND_SMS"/>
最后进行一下简单的布局(在res—layout---main.xml中):
注意名字要与主方法中的名字相对应,这个就不过多阐述了
运行: