在Android中更新Bundle getCharSequence

时间:2013-10-04 20:13:41

标签: android android-pendingintent

我遇到了Bundle,Intent和Android的大问题。

我发送短信,因此我创建了一个包含文本和数字的Bundle。 现在,当我想更改我的号码和文本时,我的应用程序始终会发送相同的第一条短信。

我几乎尝试过所有事情,但我不知道如何解决我的问题!

我试过的是: 使用FLAG更新我的PendingIntent,但它没有帮助。

也许,有人可以帮助我吗?

这是我的代码:

Intent myIntent = new Intent(Parkschein.this, MyAlarmService.class);

Bundle bundle = new Bundle();
bundle.putCharSequence("extraSmsNumber", smsNumber);
bundle.putCharSequence("extraSmsText", smsText);
pendingIntent = PendingIntent.getActivity(Parkschein.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
myIntent.putExtras(bundle);

pendingIntent = PendingIntent.getService(Parkschein.this, 0, myIntent, 0);

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

Calendar calendar = Calendar.getInstance();
                 calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.SECOND, 2);

if(smsMinutes.equals(""))
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
else {
Long smsMinutesInLong = Long.parseLong(smsMinutes);
                      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), smsMinutesInLong*60000, pendingIntent);
}

这是我的服务类,发送短信:

 public void onStart(Intent intent, int startId) {
  // TODO Auto-generated method stub
  super.onStart(intent, startId);

  pendingIntent = PendingIntent.getActivity(this, 0, intent,
    PendingIntent.FLAG_ONE_SHOT + PendingIntent.FLAG_UPDATE_CURRENT);

  Bundle bundle = new Bundle();
  bundle = intent.getExtras();

  smsNumberToSend = (String) bundle.getCharSequence("extraSmsNumber");
  smsTextToSend = (String) bundle.getCharSequence("extraSmsText");

 SmsManager smsManager = SmsManager.getDefault();
 smsManager.sendTextMessage(smsNumberToSend, null, smsTextToSend, null, null);
 }

提前致谢!

1 个答案:

答案 0 :(得分:0)

Android缓存PendingIntent之类的对象供以后使用。你确定你已经添加了标志来纠正PE吗?你可能需要这样做

pendingIntent = PendingIntent.getService(Parkschein.this, 0, myIntent, 
           PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);