如果我通过 FLAG_ONE_SHOT 添加 id,如何获取待定意图的 id?

how to get id of pending intent, if i added id by FLAG_ONE_SHOT?

我正在制作闹钟应用程序,用户可以添加多个具有不同音量和铃声的闹钟。在广播接收器我想获得 id(我在 alarmpref activity:

设置了 id
 public void setAlarm(Calendar calendar){
    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), PendingIntent.FLAG_ONE_SHOT, intent, 0);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 86400000, pendingIntent);
    Intent i = new Intent(this, AlarmReceiver.class);
    i.putExtra("id", 1);
    startActivity(i);
}

并用它大声播放选定的铃声。谢谢

您需要向 Intent 对象添加 Extras 如下:

 public void setAlarm(Calendar calendar){
    int requestCode=100;
    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    intent.putExtra("someid",123);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 86400000, pendingIntent);
}

也不需要写:

Intent i = new Intent(this, AlarmReceiver.class);
    i.putExtra("id", 1);
    startActivity(i);

当达到报警时间时,AlarmReceiver 会自动启动。