欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

android 开发 短信,Android开发之短信发送

发布时间:2023/12/2 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 android 开发 短信,Android开发之短信发送 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

今天要讲的是使用Android开发发送短信程序。我们先来看下运行效果

   

图(1)                                                                                   图(2)

图(3)

图(1):当我们运行项目时,出现在屏幕的效果;

图(2):当我们输入错误格式的电话号码时,出现在屏幕的效果图;

图(3):当我们输入格式正确时,短信发送成功的效果。

下面,来讲解该项目的开发过程。

1、创建一个Android项目,这里命名为SendMessage。

2、修改程序的布局文件main.xml内容。具体代码如下:

android:id="@+id/widget1"

android:background="@drawable/white"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

>

android:id="@+id/widget27"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/str_textview"

android:textSize="16sp"

android:layout_x="0px"

android:layout_y="12px"

>

android:id="@+id/myEditText1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text=""

android:textSize="18sp"

android:layout_x="60px"

android:layout_y="2px"

>

android:id="@+id/myEditText2"

android:layout_width="fill_parent"

android:layout_height="223px"

android:text=""

android:textSize="18sp"

android:layout_x="0px"

android:layout_y="52px"

>

android:id="@+id/myButton1"

android:layout_width="162px"

android:layout_height="wrap_content"

android:text="@string/str_button1"

android:layout_x="80px"

android:layout_y="302px"

>

3、修改values目录下的string.xml文件,并在该目录下新建一个color.xml文件,具体代码如下:

string.xml:

SendMessage

发送

收件人

color.xml:

#808080

#FFFFFF

#0000FF

这里说一下,为什么我们要新建color.xml文件,因为我们布局文件中要用到。大家可能已经发现,我们运行效果图的背景颜色不是黑色而是白色,系统默认情况下,背景是黑色,这里我们使用color.xml文件来修改背景颜色。

4、修改主程序,MyActivity.java,该文件的具体代码如下:

public class MyActivity extends Activity

{

/*声明变量一个Button与两个EditText*/

private Button mButton1;

private EditText mEditText1;

private EditText mEditText2;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

/*

* 通过findViewById构造器来建构

* EditText1,EditText2与Button对象

*/

mEditText1 = (EditText) findViewById(R.id.myEditText1);

mEditText2 = (EditText) findViewById(R.id.myEditText2);

mButton1 = (Button) findViewById(R.id.myButton1);

/*将默认文字加载EditText中*/

mEditText1.setText("请输入号码");

mEditText2.setText("请输入内容!!");

/*设置onClickListener 让用户点击EditText时做出反应*/

mEditText1.setOnClickListener(new EditText.OnClickListener()

{

public void onClick(View v)

{

/*点击EditText时清空正文*/

mEditText1.setText("");

}

}

);

/*设置onClickListener 让用户点击EditText时做出反应*/

mEditText2.setOnClickListener(new EditText.OnClickListener()

{

public void onClick(View v)

{

/*点击EditText时清空正文*/

mEditText2.setText("");

}

}

);

/*设置onClickListener 让用户点击Button时做出反应*/

mButton1.setOnClickListener(new Button.OnClickListener()

{

@Override

public void onClick(View v)

{

/*由EditText1取得短信收件人电话*/

String strDestAddress = mEditText1.getText().toString();

/*由EditText2取得短信文字内容*/

String strMessage = mEditText2.getText().toString();

/*建构一取得default instance的 SmsManager对象 */

SmsManager smsManager = SmsManager.getDefault();

// TODO Auto-generated method stub

/*检查收件人电话格式与短信字数是否超过70字符*/

if(isPhoneNumberValid(strDestAddress)==true &&

iswithin70(strMessage)==true)

{

try

{

/*

* 两个条件都检查通过的情况下,发送短信

* 先建构一PendingIntent对象并使用getBroadcast()广播

* 将PendingIntent,电话,短信文字等参数

* 传入sendTextMessage()方法发送短信

*/

PendingIntent mPI = PendingIntent.getBroadcast

(MyActivity.this, 0, new Intent(), 0);

smsManager.sendTextMessage

(strDestAddress, null, strMessage, mPI, null);

}

catch(Exception e)

{

e.printStackTrace();

}

Toast.makeText

(

MyActivity.this,"送出成功!!" ,

Toast.LENGTH_SHORT

).show();

}

else

{

/* 电话格式与短信文字不符合条件时,以Toast提醒 */

if (isPhoneNumberValid(strDestAddress)==false)

{ /*且字数超过70字符*/

if(iswithin70(strMessage)==false)

{

Toast.makeText

(

MyActivity.this,

"电话号码格式错误+短信内容超过70字,请检查!!",

Toast.LENGTH_SHORT

).show();

}

else

{

Toast.makeText

(

MyActivity.this,

"电话号码格式错误,请检查!!" ,

Toast.LENGTH_SHORT

).show();

}

}

/*字数超过70字符*/

else if (iswithin70(strMessage)==false)

{

Toast.makeText

(

MyActivity.this,

"短信内容超过70字,请删除部分内容!!",

Toast.LENGTH_SHORT

).show();

}

}

}

});

}

/*检查字符串是否为电话号码的方法,并返回true or false的判断值*/

public static boolean isPhoneNumberValid(String phoneNumber)

{

boolean isValid = false;

/* 可接受的电话格式有:

* ^\\(? : 可以使用 "(" 作为开头

* (\\d{3}): 紧接着三个数字

* \\)? : 可以使用")"接续

* [- ]? : 在上述格式后可以使用具选择性的 "-".

* (\\d{3}) : 再紧接着三个数字

* [- ]? : 可以使用具选择性的 "-" 接续.

* (\\d{5})$: 以五个数字结束.

* 可以比较下列数字格式:

* (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890

*/

String expression =

"^\\(?(\\d{3})\\)?[- ]?(\\d{3})[- ]?(\\d{5}){1}quot;;

/* 可接受的电话格式有:

* ^\\(? : 可以使用 "(" 作为开头

* (\\d{3}): 紧接着三个数字

* \\)? : 可以使用")"接续

* [- ]? : 在上述格式后可以使用具选择性的 "-".

* (\\d{4}) : 再紧接着四个数字

* [- ]? : 可以使用具选择性的 "-" 接续.

* (\\d{4})$: 以四个数字结束.

* 可以比较下列数字格式:

* (02)3456-7890, 02-3456-7890, 0234567890, (02)-3456-7890

*/

String expression2=

"^\\(?(\\d{3})\\)?[- ]?(\\d{4})[- ]?(\\d{4}){1}quot;;

CharSequence inputStr = phoneNumber;

/*创建Pattern*/

Pattern pattern = Pattern.compile(expression);

/*将Pattern 以参数传入Matcher作Regular expression*/

Matcher matcher = pattern.matcher(inputStr);

/*创建Pattern2*/

Pattern pattern2 =Pattern.compile(expression2);

/*将Pattern2 以参数传入Matcher2作Regular expression*/

Matcher matcher2= pattern2.matcher(inputStr);

if(matcher.matches()||matcher2.matches())

{

isValid = true;

}

return isValid;

}

public static boolean iswithin70(String text)

{

if (text.length()<= 70)

{

return true;

}

else

{

return false;

}

}

}

5、到此整个项目已经开发完毕!

到此本该结束,但是考虑到一些细节,有必要说下。

本项目的基本思想:在具体实现上,是通过SmsManager对象的sendTextMessage()方法来实现的,其中sendTextMessage()方法需要传入5个值,依次是:收件人地址String、发送地址String、正文String、发送服务PendingIntent和送达服务PendingInten。在这里我们还详细的定义了电话的格式,文中有详细的说明。还约束了短信内容的字长!

总结

以上是生活随笔为你收集整理的android 开发 短信,Android开发之短信发送的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。