今天要讲的是使用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开发之短信发送相关推荐

  1. 基于Android的短信应用开发(一)——界面设计开发

    刚刚接触Android开发,最近自己在上手开发一个手机短信应用,由于是从头开始开发,首先还是得设计实现界面,初步效果如图: 程序代码如下 1.MainActivity.java package com ...

  2. App开发(Android与php接口)之:短信验证码

    最近和同学们一起开发一个自主项目,要用到短信验证码,在网上搜索了很久,看到一个推荐贴,提到了很多不错的短信服务商.经过测试,帖子中提到的服务商他们的短信到达率和到达速度也都不错.最后,由于经费问题,我 ...

  3. android开发发送短信,Android开发入门之发送短信

    第一步:新建一个Android工程命名为03.Sms目录结构如下图: 第二步:修改activity_main.xml布局文件代码如下: xmlns:tools="http://schemas ...

  4. android开发学习:打电话和发短信

    1.新建一个android项目 File--New--Other--android application project 填写application name(就是应用的名字.比方:天天酷跑) 填写 ...

  5. 基于Android的短信应用开发(六)——将发出短信存至数据库

    到目前为止,我们所做的工作都是从手机数据库读取数据并加以显示,而这一次,我们要开始尝试其他类型的操作了,就是将用户发出的信息存至手机短信数据库中,按照惯例,还是先上图,看看效果怎么样再说吧.      ...

  6. 基于Android的短信应用开发(三)——读取手机短信

    在上一次的学习中,我们读取了手机联系人并将其显示在短信界面上,而接下来,我们将开始读取手机短信了,下面先来看一下最终运行效果图吧. 首先看一下手机短信数据库,访问路径是:/data/data/com. ...

  7. Android短视频app开发中如何实现上下滑动切换效果

    在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...

  8. Android 短视频编辑开发前言(一)

    系列文章目录 Android 短视频编辑开发前言(一) Android 短视频开发之摄像头预览(二) Android 短视频编辑开发之摄像头预览实时美颜(三) Android 短视频编辑开发之相机拍照 ...

  9. android不调用系统发送短信,android之两种方式调用短信发送接口

    释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...

最新文章

  1. linux 定时每天执行php,linux下使用cronjob定时执行php脚本
  2. 一个web.Config或app.Config自定义段configSections的示例
  3. leetcode 637. Average of Levels in Binary Tree | 637. 二叉树的层平均值(Java)
  4. 使用Apache Isis快速进行SEMAT应用程序开发
  5. 杭州登山地图是谁开发的_好天气继续,重阳节登高,五条杭州登山线路奉上
  6. C 标准库 —— ctypes.h
  7. 离线语音识别_离线语音识别库_离线语音识别sdk - 云+社区 - 腾讯云
  8. linux wireless子系统,Linux Wireless子系统初始化
  9. python调用sql数据库进存销_Python如何使用数据库的连接池
  10. 几句代码让Ios系统内核崩溃
  11. 如何让自己不再暴躁易怒
  12. CSS的class常用命名规则
  13. Python实现生成多个不同半径、互不重叠的圆形的方法
  14. 在mac上安装md5命令
  15. 第九十一章 SQL函数 LOWER
  16. 大热的DevOps,和软件测试的关系竟然是什么呢?
  17. Linux之pstree命令
  18. 软件测试——基础练习(期末复习)
  19. IAR7.8 IAR8.5 IAR9.10.1 IAR9.10.2 KEIL 安装包
  20. 老师不能被计算机取代的英文作文,2019专八作文范文赏析:老师不能被取代

热门文章

  1. 在Play上使用twitter4j! 框架和安全社交很容易
  2. Java中的高性能库
  3. EJB 3.1全局JNDI访问
  4. 具有Java 7中自动资源管理功能的GC
  5. RFC(一系列以编号排定的文件)
  6. HDR和SDR的区别
  7. asp.net html2canvas,Vue 结合html2canvas和jsPDF实现html页面转pdf
  8. python内置类型_Python内置对象类型
  9. git.exe 启动 慢_四川成都surface电脑启动到一半黑屏维修服务地址电话
  10. windows数据自动上传服务器,windows服务器间自动传输文件