android发送短信截获上一条发送是否成功,然后再来发送下一条短信

1.问题:在项目中遇到例如以下要求:待发短信有N条,实现一条一条的发送并在上一条短信发送成功之后再来发送下一条。

for(int i=0;i<3;i++){

  sendSMS(10086, text1, i);

  }



private void sendSMS(String toAddress, String body, Long id) {





// ---sends an SMS message to another device---

                     SmsManager sms = SmsManager.getDefault();

String SENT_SMS_ACTION = "SENT_SMS_ACTION";

// create the sentIntent parameter

Intent sentIntent = new Intent(SENT_SMS_ACTION);

sentIntent.putExtra("id", id);

   PendingIntent sentPI = PendingIntent.getBroadcast(

   ListOutgoingActivity.this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);

//你同一时候发送非常多信息的话,会产生非常多一样的PendingIntent,然后Android操作系统会把pendingIntent的数据更新到最新,所以toast的ID是最新的数据,曾经的数据会被覆盖掉。这个能够用来同步数据。

// 假设短信内容超过70个字符 将这条短信拆成多条短信发送出去

                    if (body.length() > 70) {

ArrayList<String> msgs = sms.divideMessage(body);

for (String msg : msgs) {

sms.sendTextMessage(toAddress, null, msg, sentPI,

null);

}

} else {

System.out.println("body====" + body);

sms.sendTextMessage(toAddress, null, body, sentPI, null);

}

BroadcastReceiver sendMessage = new BroadcastReceiver() {





@Override

public void onReceive(Context context, Intent intent) {

// 推断短信是否发送成功

switch (getResultCode()) {

case Activity.RESULT_OK:

Long id = intent.getLongExtra("id", -12);



                                                              //截取每次发送短信的ID,可是toast的id都是2???,正常情况下应该各自是0,1,2



Toast.makeText(ListOutgoingActivity.this,

id +"发送成功", Toast.LENGTH_SHORT).show();



break;

default:

Toast.makeText(ListOutgoingActivity.this,

"发送失败", Toast.LENGTH_LONG).show();

break;

}

}

};

registerReceiver(sendMessage, new IntentFilter(

SENT_SMS_ACTION));}

2.解决的方法:如今的解决方法是,收到上一条信息发送成功或者失败后,在发送下一条数据

int i=0;

sendSMS(10086,test, i) ;

private void sendSMS(String toAddress, String body, Long id) {





// ---sends an SMS message to another device---

                     SmsManager sms = SmsManager.getDefault();

 String SENT_SMS_ACTION = "SENT_SMS_ACTION";

// create the sentIntent parameter

Intent sentIntent = new Intent(SENT_SMS_ACTION);

sentIntent.putExtra("id", id);

    PendingIntent sentPI = PendingIntent.getBroadcast(

    ListOutgoingActivity.this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);

// 假设短信内容超过70个字符 将这条短信拆成多条短信发送出去

if (body.length() > 70) {

ArrayList<String> msgs = sms.divideMessage(body);

for (String msg : msgs) {

sms.sendTextMessage(toAddress, null, msg, sentPI,

null);

}

} else {

System.out.println("body====" + body);

sms.sendTextMessage(toAddress, null, body, sentPI, null);

}

BroadcastReceiver sendMessage = new BroadcastReceiver() {





@Override

public void onReceive(Context context, Intent intent) {

// 推断短信是否发送成功

switch (getResultCode()) {

case Activity.RESULT_OK:

Long id = intent.getLongExtra("id", -12);

                                    Toast.makeText(ListOutgoingActivity.this,id +"发送成功", Toast.LENGTH_SHORT).show();

i++;

if(i<3){

sendSMS(10086,test,i)

}

break;

default:

Toast.makeText(ListOutgoingActivity.this,

"发送失败", Toast.LENGTH_LONG).show();

break;

}

}

};

registerReceiver(sendMessage, new IntentFilter(

SENT_SMS_ACTION));}

android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信的更多相关文章

  1. Android下调用收发短信邮件等

    Android下调用收发短信邮件等 1,调web浏览器Uri myBlogUri = Uri.parse("http://xxxxx.com");returnIt = new In ...

  2. Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果

    1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...

  3. linux下进度条的编写和实现

    实现了一个简单的进度条,主要技术啥的算不上,但有几个需要注意的点 首先是回车符,回车符可不是\n,我们可以把\n看成是两个动作的合体,分别是,回车和换行,都有自己对应的符号,这利用回车符一直在同一个位 ...

  4. 自己制作一个链表用来存储列表信息,并查找当前id信息,找上一条信息,下一条信息(信息浏览的时候方便使用)

    偶然看到某些网站在新闻详情中 ,往往是需要根据当前信息id获取到上一条信息和下一条信息的,而通常我们的做法是先获取当前信息,再获取上一条信息,再获取下一条信息,就需要发送三次查询才能够得到这些信息,一 ...

  5. sql查询上一条记录和下一条记录

    上一条记录的SQL语句: * from news where newsid<id order by newsid DESC 下一条记录的SQL语句: * from news where news ...

  6. LINUX下PHP开启短标签short_open_tag支持

    LINUX下PHP开启短标签short_open_tag支持 以CENTOS为例: 找到php.ini #find / -name php.ini #/etc/php.ini 编辑php.ini #v ...

  7. asp.net 上一条和下一条记录的显示

    这里我用的是input标签跳转页面的: 前台aspx页面中: <input class="btn" id="btnSetForm" type=" ...

  8. android中自定义view---实现竖直方向的文字功能,文字方向朝上,同时提供接口,判断当前touch的是哪个字符,并改变颜色

    android自定义view,实现竖直方向的文字功能,文字方向朝上,同时提供接口,判断当前touch的是哪个字符,并改变颜色. 由于时间比较仓促,因此没有对代码进行过多的优化,功能远远不如androi ...

  9. 使用B或BL跳转时,下一条指令的地址是这样计算的

    B跳转指令:它是个相对跳转指令,其机器码格式如下: [31:28]位是条件码:[27:24]位为“1010”(0xeaffffff)时,表示B跳转指令,为“1011”时,表示BL跳转指令:[23:0] ...

随机推荐

  1. nodejs--express开发博客系统(三)

    上一节已经实现了登录.注册.发表文章和文章读取的功能,今天咱加上评论.文章页面和作者页面. 评论只能在进入文章页面后才能进行,所以咱们先写文章页面. 在上一节的代码中,我已经给文章标题添加了超链接了, ...

  2. 使用Linux静态库

    查看静态库.a文件包含的内容用下面的命令解压: ar x libgdal.a 然后就可以查看文件了: ls adler32.o cpl_recode.o dted_create.o gdalpamra ...

  3. 分析php获取客户端ip

    用php能获取客户端ip,这个大家都知道,代码如下: /** * 获取客户端ip * @param number $type * @return string */ function getClien ...

  4. PHP自学之路-----javascript基础入门

    Javascript概述: Javascript是基于对象和事件的脚本语言.特点; 1.安全性(不允许直接访问本地硬盘),它可以做的就是信息的动态交互. 2.跨平台性. JavaScript与HTML ...

  5. Android Blur效果之FastBlur

    Blur 自从iOS系统引入了Blur效果,也就是所谓的毛玻璃.模糊化效果,磨砂效果,各大系统就開始竞相模仿,这是一个怎样的效果呢,我们现来看一些图: 这些就是典型的Blur效果,在iOS和MIUI中 ...

  6. asp.net Page_Load事件加载两次

    Page_Load 即使加上 if(!IsPostBack){ ……} 还时走了2次 这时候 或者看看你的程序和脚本,是不是刷新页面了 或者页面的样式有错误的地方  例如: background:ur ...

  7. JavaScript 高级程序设计(第3版)笔记——chapter6:面向对象的程序设计

    一.创建对象 工厂模式.使用简单的函数创建对象,为对象添加属性和方法,然后返回对象.[问题:没有解决对象识别问题] 1 function createPerson(name, age) { 2 var ...

  8. 最简单的javascript 竖向菜单

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    ...

  9. commons-logging \ log4j \ slf4j 之间的关系

    最近的一个web项目中要使用到日志,但是对常用的日志记录工具(框架)着实不是很理解,在此mark一下. 1.commons-logging.jar common-logging是apache提供的一个 ...

  10. 深入浅出—JAVA(3)

    3.认识变量 变量有两种:primitive主数据类型和引用. 变量有两种口味:清凉的primitive主数据类型与香辣的对象引用.primitive主数据类型用来保存基本类型的值,包括整数.布尔和浮 ...