我对AlarmManager有一个奇怪的情况。我正在使用AlarmManager安排一个事件,并使用intent.putExtra传入一个字符串。弦是静音或振动的,当接收器发出电话时,应该转动振铃器或将手机设置为振动。 log语句每次都正确输出预期值。
Intent intent;
if (eventType.equals("start")) {
intent = new Intent(context, SReceiver.class);
} else {
intent = new Intent(context, EReceiver.class);
}
intent.setAction(eventType+Long.toString(newId));
Log.v("EditQT",ringerModeType.toUpperCase());
intent.putExtra("ringerModeType", ringerModeType.toUpperCase());
PendingIntent appIntent = PendingIntent.getBroadcast(context, 0,
intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService (Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
appIntent);
警报执行时触发的接收器也有一个日志语句,我可以看到第一次该语句输出预期的字符串SILENT或VIBRATE但是对于每次后续执行,输出显示接收端的原始值。警报执行然后我将putExtra的值更改为相反的字符串,接收器仍然显示前一个值事件,尽管上面代码中的调用显示传入了新值.setAction的值每次都相同。 / p>
audioManager = (AudioManager) context.getSystemService(Activity.AUDIO_SERVICE);
Log.v("Start",intent.getExtras().get("ringerModeType").toString());
if (intent.getExtras().get("ringerModeType").equals("SILENTMODE")) {
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
} else {
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
有什么想法吗?
答案 0 :(得分:7)
您的问题被问到six hours ago。
如果您有多个PendingIntents
同时使用不同的附加内容,则需要更改Intents
中的其他内容,例如操作字符串或Uri
,如上所述在上面的链接问题中。
如果您一次只有一个PendingIntent
,但您的额外费用可能会有所不同,请在致电FLAG_UPDATE_CURRENT
时使用getBroadcast()
。
答案 1 :(得分:1)
多个PendingIntents:
Intent notificationIntent = new Intent(this, Oconf.class);
notificationIntent.setData(Uri.parse("text"));
然后,onNewIntent(意图意图):
String text = intent.getData().toString();