Android基础教程之SMS简单发送短信程序


 2010-07-15 21:01:00 来源:WEB开发网 【减小字体增大字体】  关注谷汶锴的微博核心提示:前面的范例,示范了如何通过程序拨打电话,GSM移动通信系统的服务中,除了打电话外,另一个常用的功能,就是发短信.也因为如此,许多电信业者推出专属短信族的专用费率,由此可知短信功能对手机的重要性.发送短信的关键程序是通过SmsManager对象的sendTextMessage()方法来完成,其中sendTextMess

  前面的范例,示范了如何通过程序拨打电话,GSM移动通信系统的服务中,除了打电话外,另一个常用的功能,就是发短信.也因为如此,许多电信业者推出专属短信族的专用费率,由此可知短信功能对手机的重要性.

  发送短信的关键程序是通过SmsManager对象的sendTextMessage()方法来完成,其中sendTextMessage()方法需传入五个值,依次是收件人地址(String),发送地址(String),发送服务(PendingIntent)与送达服务(PendingIntent),其中收件人与正文是不可为null的两个参数.

  本例子通过两个模拟器,5554,5556互相通信,下面我将分5个步骤,讲一下发送短信程序是如何实现的.

  Step 1:建立一个Android工程,我们命名为SMSDemo.

  Step 2:设计一下程序的UI,也就是主界面main.xml,这里用AbsoluteLayout,有点丑见笑了!代码如下:

  < ?xml version="1.0" encoding="utf-8"?>

  < AbsoluteLayout

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

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

  >

  < p>

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="收件 人:"

  android:textSize="16sp"

  android:layout_x="0px"

  android:layout_y="12px"

  >

  < /TextView>

  < EditText

  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"

  >

  < /EditText>

  < EditText

  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"

  >

  < /EditText>

  < Button

  android:id="@+id/myButton1"

  android:layout_width="162px"

  android:layout_height="wrap_content"

  android:text="发送短信"

  android:layout_x="80px"

  android:layout_y="302px"

  >

  < /Button>

  < /AbsoluteLayout>

  Step 3:主控制程序SMSDemo.java如下:

  package com.android.test;

  import android.app.Activity;

  import android.app.PendingIntent;

  import android.content.Intent;

  import android.os.Bundle;

  import android.telephony.gsm.SmsManager;

  import android.view.View;

  import android.widget.Button;

  import android.widget.EditText;

  import android.widget.Toast;

  public class SMSDemo extends Activity {

  private Button mButton1;

  private EditText mEditText1;

  private EditText mEditText2;

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  //获取资源

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

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

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

  //发送短信的响应

  mButton1.setOnClickListener(new Button.OnClickListener(){

  public void onClick(View v) {

  //获取发送地址和发送内容

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

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

  //构建一取得default instanceSmsManager对象

  SmsManager smsManager = SmsManager.getDefault();

  //检查输入内容是否为空,这里为了简单就没有判断是否是号码,短信内容长度的限制也没有做

  if(messageAddress.trim().length()!=0 && messageContent.trim().length()!=0)

  {

  try{

  PendingIntent pintent = PendingIntent.getBroadcast(SMSDemo.this, 0, new

  Intent(), 0);smsManager.sendTextMessage(messageAddress, null, messageContent, pintent, null);

  }catch(Exception e)

  {

  e.printStackTrace();

  }

  //提示发送成功

  Toast.makeText(SMSDemo.this, "发送成功", Toast.LENGTH_LONG).show();

  }

  else{

  Toast.makeText(SMSDemo.this, "发送地址或者内容不能为空", Toast.LENGTH_SHORT).show();

  }

  }

  });

  }

  }

  Step 4:增加拨打电话权限AndroidManifest.xml代码如下:

  < ?xml version="1.0" encoding="utf-8"?>

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

  package="com.android.test"

  android:versionCode="1"

  android:versionName="1.0">

  < application android:icon="@drawable/icon" android:label="@string/app_name">

  < activity android:name=".SMSDemo"

  android:label="@string/app_name">

  < intent-filter>

  < action android:name="android.intent.action.MAIN" />

  < category android:name="android.intent.category.LAUNCHER" />

  < /intent-filter>

  < /activity>

  < /application>

  < uses-sdk android:minSdkVersion="3" />

  < uses-permission android:name="android.permission.SEND_SMS">

  < /manifest>

  1.第一个模拟器,我们通过IDE编辑器—eclipse启动。

  具体方法是:打开你的eclipse,随便运行一个项目。若是你的eclipse第一次使用,新建一个项目(譬如那个经典的“hello world),然后运行它。Eclipse会帮你启动我们的第一个android模拟器。ID5554.

  2. 第二个模拟器,我们通过DOS命令启动。具体方法:“开始”-“运行”-CMD”,确定或回车键。打开一个命令行窗口。然后cd 命令到你的android SDK目录的tools文件夹下面,

  输入emulator -data foo 回车。稍等片刻,系统即可帮你启动又一个新的android模拟器。ID5556.

  好了,两个全新的模拟器我们已经启动完毕。最难的地方已经过去。现在来测试接打电话和收发短信。

  二:测试收发短信:主界面上有“信息”菜单,没有的话在“主菜单”找。不要说你不知道菜单项在哪儿。

  启动发短信程序,可以看到发送短信界面。顶端一个输入框,输入你要发送短信的目的人的手机号(此处我们往另一个模拟器发送,输入另一个模拟器的ID号 -5556),底部输入框,输入你要发送的内容,右下角有一“发送”按钮,输入成功后,点击“发送”,即可成功向另一模拟器发送你输入的内容。稍后,你便可在另一模拟器上看到提示信息,提示有新短信进入,发送方为“5554”。

  至于短信内容嘛,如果你发送的英文或者数字,可在另一模拟器上完全显示,但如果你发送的内容是汉字,则在接收方模拟器显示的则会是乱码。这个问题恐怕和 android系统的底层文字编码有关。怎么解决,我现在还不知道。不过这种情况只会在模拟器上出现,真机上是不会出现汉字传输乱码的情况的。

  发送方发送短信输入界面:

  Step 5:run it!效果图如下,55545556发送了一条短信:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值