Simple AlarmManager example for firing an activity in 10 minutes

后端 未结 2 2052
感动是毒
感动是毒 2021-01-01 04:35

I\'ve found many similar questions to this, but they\'re too complicated (too much code), at least I think.

Can this thing be done in a few code of lines? I want to

2条回答
  •  夕颜
    夕颜 (楼主)
    2021-01-01 05:23

    This function I use sets or cancels an alarm depending on the "Set" parameter

    public static void SetAlarm(Context c, long AlarmTime, int ItemID, String Message, Boolean Set) {
        Intent intent = new Intent(c, AlarmReceiver.class);
        intent.putExtra("Message", Message);
        intent.putExtra("ItemID", ItemID);
    
        PendingIntent sender = PendingIntent.getBroadcast(c, 8192 + ItemID, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    
                // Clear the seconds to 0 for neatness
        Calendar ca = Calendar.getInstance();
        ca.setTimeInMillis(AlarmTime);
        ca.set(Calendar.SECOND, 0);
        AlarmTime = ca.getTimeInMillis();
    
        // Get the AlarmManager service
        AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
        if (Set) {
            am.set(AlarmManager.RTC_WAKEUP, AlarmTime, sender);
        } else {
            am.cancel(sender);
        }
    }
    

    You would then need a Broadcast Receiver to handle the alarm and do whatever it is you want to do.

    public class AlarmReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(Context context, Intent intent) {
        try {
            Bundle bundle = intent.getExtras();
            String Message = bundle.getString("Message");
            int ItemID = bundle.getInt("ItemID");
    
            // Do what you want to do, start an activity etc
    
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

    }

提交回复
热议问题