Den*_*mer 8 android alarmmanager android-intent android-broadcastreceiver
我想从BroadcastReceiver 类的onReceive()方法中的Intent 获取一些参数。但是只有 int ALARM_COUNT = 1,虽然我放了两个参数:我的 Parcelable Alarm 对象和 test int(对于警报对象有问题的情况)。
我这样设置闹钟:
private void setCurrentAlarm(Alarm alarm) {
long time = System.currentTimeMillis() + getClosestTimeDifference(alarm);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, createPendingIntent(alarm));
}
Run Code Online (Sandbox Code Playgroud)
我是如何创建 PendingIntent 变量的:
private PendingIntent createPendingIntent(@NonNull Alarm alarm) {
Intent intent = new Intent(mContext, AlarmBroadcastReceiver.class);
intent.putExtra(KEY_ALARM, alarm);
intent.putExtra("TEST", 1010120012);
return PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
Run Code Online (Sandbox Code Playgroud)
我的 AlarmBroadcaseReceiver 类中的 onReceive() 方法:
@Override
public void onReceive(Context context, Intent intent) {
Alarm receivedAlarm = intent.getParcelableExtra(KEY_ALARM); //is always null
int receivedInt = intent.getIntExtra("TEST", -1); //the same empty, -1
}
Run Code Online (Sandbox Code Playgroud)
如您所见,Intent 仅包含一些额外的 ALARM_COUNT,但没有我的额外内容。
该怎么办?我怎样才能得到它们?
nyx*_*xee -1
使用下面示例中所示的标志对我很有帮助。
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_CANCEL_CURRENT)
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_IMMUTABLE)
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_ONE_SHOT)
retrun PendingIntent.getBroadcast(mContext, alarm.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |