android sendTextMessage发送多条短信,广播接收到相同内容

xuekunlixue 2013-06-21 02:31:57
我使用 SmsManager.getDefault()去发送多条短信(通过for循环去发送),并在intent中put相关信息,通过接收广播,判断是否发送成功。广播接收到后,从intent中获取到的信息只是第一条的发送内容,后面所有都重复第一条的内容,求高手帮助解答,急啊~~~~





短信发送代码

for(int i=3;i<5;i++){
sendSms("code"+i,"1391840160"+i,i+"sms content is test,i hope success!");
}



public void sendSms(String code,String comPhone,String content) {
sentIntent.putExtra("SEND_SMS_NUM", comPhone);
sentIntent.putExtra("SEND_SMS_CONTENT", content);
sentIntent.putExtra("SEND_SMS_CODE", code);
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, sentIntent,0);
Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
PendingIntent deliverPI = PendingIntent.getBroadcast(this, 0,deliverIntent, 0);
Log.w(TAG, "扣费短信编码为----->存储【"+sentIntent.getStringExtra("SEND_SMS_CODE")+"】");
Log.w(TAG, "发送短信--接收手机号码为------>存储【" + sentIntent.getStringExtra("SEND_SMS_NUM") + "】");
Log.w(TAG, "发送短信内容为------>存储【" + sentIntent.getStringExtra("SEND_SMS_CONTENT")+"】");
sms.sendTextMessage(comPhone, null, content, sentPI, deliverPI);
}



广播接收代码

BroadcastReceiver receiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Log.i(TAG, "短信发送成功!------>编号=【"+intent.getStringExtra("SEND_SMS_CODE")+"】<------>号码=【"+intent.getStringExtra("SEND_SMS_NUM")+"】<------>内容=【"+intent.getStringExtra("SEND_SMS_CONTENT")+"】");
break;

default:
Log.i(TAG, "短信发送成功!------>编号=【"+intent.getStringExtra("SEND_SMS_CODE")+"】<------>号码=【"+intent.getStringExtra("SEND_SMS_NUM")+"】<------>内容=【"+intent.getStringExtra("SEND_SMS_CONTENT")+"】");
break;
}
}
};
IntentFilter filter=new IntentFilter();
filter.addAction(SENT_SMS_ACTION);
filter.addAction(DELIVERED_SMS_ACTION);
filter.addAction(SMS_RECEIVED);
filter.addCategory(DEFAULT);
filter.setPriority(priority);
this.registerReceiver(receiver, filter);





具体接收的情况



06-21 11:18:55.875: W/MainActivity(19388): 扣费短信编码为----->存储【code3】
06-21 11:18:55.875: W/MainActivity(19388): 发送短信--接收手机号码为------>存储【13918401603】
06-21 11:18:55.875: W/MainActivity(19388): 发送短信内容为------>存储【3sms content is test,i hope success!】
06-21 11:18:55.925: I/MainActivity(19388): 短信发送成功!------>编号=【code3】<------>号码=【13918401603】<------>内容=【3sms content is test,i hope success!】
06-21 11:18:55.925: I/MainActivity(19388): 短信发送完成!
06-21 11:19:01.931: W/MainActivity(19388): 扣费短信编码为----->存储【code4】
06-21 11:19:01.931: W/MainActivity(19388): 发送短信--接收手机号码为------>存储【13918401604】
06-21 11:19:01.931: W/MainActivity(19388): 发送短信内容为------>存储【4sms content is test,i hope success!】
06-21 11:19:01.931: D/Jerry(19388): getSystemPreference msgId >1
06-21 11:19:01.941: I/MainActivity(19388): action name is------>SENT_SMS_ACTION
06-21 11:19:01.941: I/MainActivity(19388): 短信发送成功!------>编号=【code3】<------>号码=【13918401603】<------>内容=【3sms content is test,i hope success!】
06-21 11:19:01.941: I/MainActivity(19388): 短信发送完成!





接收到的短信内容都是相同的,不知道为什么,求高人指导~~~万分感谢
...全文
801 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chasn 2014-10-14
  • 打赏
  • 举报
回复
好多年没有登录过论坛了,这次专门回复一下这个问题,直接的解决办法就是,在获取pendingintent的地方,第二个参数,requestCode,为每个动作设置成不同的,比如: PendingIntent sentIntent = PendingIntent.getBroadcast(SmsApplication.getAppContext(), (int) Calendar.getInstance().getTimeInMillis(), intent, 0); 这样写。 具体的原因,见Android文档的http://developer.android.com/reference/android/app/PendingIntent.html#getBroadcast(android.content.Context, int, android.content.Intent, int) 处,同时建议顺带了解PendingIntent的几个Flag的意义,FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT
路人贾 2014-07-09
  • 打赏
  • 举报
回复
在广播接收中 的最后处理 加上 abortBroadcast();
599025085 2014-07-09
  • 打赏
  • 举报
回复
也遇到此问题了,如何解决???
feesx 2014-04-18
  • 打赏
  • 举报
回复
也遇到该问题
kezhaoyuan 2014-01-01
  • 打赏
  • 举报
回复
请问楼主,问题解决了吗?
雨焰 2013-07-02
  • 打赏
  • 举报
回复
写的好乱啊! 你使用debug调试一下也没找出结果吗? 将你的case 和default打印的结果换一下呗,不要写成一样的内容!
AMinfo 2013-07-02
  • 打赏
  • 举报
回复
这段代码改一下:
BroadcastReceiver receiver=new BroadcastReceiver()
{
	@Override
	public void onReceive(Context context, Intent intent)
	{
		if (intent.getAction().equals("android.provider.Telephony.SMS_SEND"))
		{
			switch (getResultCode())
			{
				case Activity.RESULT_OK:
					Log.i(TAG, "短信发送成功!------>编号=【"+intent.getStringExtra("SEND_SMS_CODE")+"】<------>号码=【"+intent.getStringExtra("SEND_SMS_NUM")+"】<------>内容=【"+intent.getStringExtra("SEND_SMS_CONTENT")+"】");
					break;
				default:
					Log.i(TAG, "短信发送成功!------>编号=【"+intent.getStringExtra("SEND_SMS_CODE")+"】<------>号码=【"+intent.getStringExtra("SEND_SMS_NUM")+"】<------>内容=【"+intent.getStringExtra("SEND_SMS_CONTENT")+"】");
					break;
			}
		}
	}
};
F5的狼 2013-07-01
  • 打赏
  • 举报
回复
我也遇到这个问题,郁闷。
xuekunlixue 2013-06-21
  • 打赏
  • 举报
回复
自己顶顶吧~不能解决,解释一下什么原因也可以啊~~~

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧