0

我在使用 Bundle、Intent 和 Android 时遇到了很大的问题。

我发送了一条短信,因此我创建了一个包含文本和号码的捆绑包。现在,当我想更改我的号码和短信时,我的应用程序总是发送相同的第一条短信。

我几乎尝试了所有方法,但我不知道如何解决我的问题!

我尝试的是:使用 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);
 }

提前致谢!

4

1 回答 1

0

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

pendingIntent = PendingIntent.getService(Parkschein.this, 0, myIntent, 
           PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
于 2013-10-04T22:17:49.030 回答