设为首页 加入收藏

TOP

Android--判断发送短信后的状态/发送成功Or发送失败(一)
2014-11-24 08:24:48 来源: 作者: 【 】 浏览:0
Tags:Android-- 判断 发送 短信 后的 状态 成功 失败

首先,我们需要在程序中注册两个权限:


1.接收短信的权限


2.发送短信的权限




之后,我们需要开启两个模拟器测试程序的功能,下面是实现的截图,首先看第一张截图,是一个模拟器接收到另一个模拟器发送来的短信显示在通知栏里:



我们会看到这个模拟器的端口号叫做5554,这个就相当于手机号,我们发送短信只要把这个号码当做是手机号使用即可,下面这张截图是主程序的实现截图,点击发送按钮,短信被发出,同时,如果成功,系统会发送广播信息。


截图如下:



下面给出程序的实现代码:


public class EX06_14 extends Activity
{
/* 建立两个mServiceReceiver对象,作为类成员变量 */
private mServiceReceiver mReceiver01, mReceiver02;
private Button mButton1;
private TextView mTextView01;
private EditText mEditText1, mEditText2;

/* 自定义ACTION常数,作为广播的Intent Filter识别常数 */
private static String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
private static String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mTextView01 = (TextView)findViewById(R.id.myTextView1);

/* 电话号码 */
mEditText1 = (EditText) findViewById(R.id.myEditText1);

/* 短信内容 */
mEditText2 = (EditText) findViewById(R.id.myEditText2);

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

//mEditText1.setText("+886935123456");
/* 设定预设为5556表示第二个模拟器的Port */
mEditText1.setText("5556");
mEditText2.setText("Hello DavidLanz!");

/* 发送SMS短信按钮事件处理 */
mButton1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub

/* 欲发送的电话号码 */
String strDestAddress = mEditText1.getText().toString();

/* 欲发送的短信内容 */
String strMessage = mEditText2.getText().toString();

/* 建立SmsManager对象 */
SmsManager smsManager = SmsManager.getDefault();

// TODO Auto-generated method stub
try
{
/* 建立自定义Action常数的Intent(给PendingIntent参数之用) */
Intent itSend = new Intent(SMS_SEND_ACTIOIN);
Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);

/* sentIntent参数为传送后接受的广播信息PendingIntent */
PendingIntent mSendPI = PendingIntent.getBroadcast(getApplicationContext(), 0, itSend, 0);

/* deliveryIntent参数为送达后接受的广播信息PendingIntent */
PendingIntent mDeliverPI = PendingIntent.getBroadcast(getApplicationContext(), 0, itDeliver, 0);

/* 发送SMS短信,注意倒数的两个PendingIntent参数 */
smsManager.sendTextMessage(strDestAddress, null, strMessage, mSendPI, mDeliverPI);
mTextView01.setText(R.string.str_sms_sending);
}
catch(Exception e)
{
mTextView01.setText(e.toString());
e.printStackTrace();
}
}
});
}

/* 自定义mServiceReceiver重写BroadcastReceiver监听短信状态信息 */
public class mServiceReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
// TODO Auto-generated method stub

//mTextView01.setText(intent.getAction().toString());
if (intent.getAction().equals(SMS_SEND_ACTIOIN))
{
try
{
/* android.content.BroadcastReceiver.getResultCode()方法 */
//Retrieve the current result code, as set by the previous receiver.
switch(getResultCode())
{
case Activity.RESULT_OK:
/* 发送短信成功 */
//mTextView01.setText(R.string.str_sms_sent_success);
mMakeTextToast
(
getResources().getText(R.string.str_sms_sent_success).toString(),

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇如何判断Android手机当前是否联网? 下一篇一个好玩的Android应用程序/开机..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)