【问题标题】:What happens to the alarms set via alarm manager by an app, if the app is uninstalled如果应用程序被卸载,应用程序通过警报管理器设置的警报会发生什么情况
【发布时间】:2013-10-19 11:00:05
【问题描述】:

我有以下代码可以通过我的应用设置警报。

Intent intent = new Intent("MY_ALARM_NOTIFICATION");
intent.setClass(myActivity.this, OnAlarmReceive.class);
intent.putExtra("id", id);


PendingIntent pendingIntent = PendingIntent.getBroadcast(
                myActivity.this, Integer.parseInt(id),
                intent, PendingIntent.FLAG_UPDATE_CURRENT);

Calendar timeCal = Calendar.getInstance();
timeCal.set(Calendar.HOUR_OF_DAY, hour);
timeCal.set(Calendar.MINUTE, minutes);
timeCal.set(Calendar.DAY_OF_MONTH, day);
timeCal.set(Calendar.MONTH, month - 1);
timeCal.set(Calendar.YEAR, year);

Date date = timeCal.getTime();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, timeCal.getTimeInMillis(), pendingIntent);

当我从设置中删除我的应用程序时会发生什么?警报是否仍然存在?

【问题讨论】:

    标签: android android-pendingintent android-alarms


    【解决方案1】:

    您通过AlarmManager 安排的活动会在卸载安排它们的应用程序后被删除。

    【讨论】:

    • 不知道是不是同一个iOS?
    • @tony9099:我不知道 iOS 有 AlarmManager、PendingIntent 等。你最好问一个单独的 StackOverflow 问题,用 ios 标记而不是 android,用 iOS 特定的术语解决您的问题。
    • @CommonsWare 在“应用更新”的情况下是否类似?给予警报管理器的未决意图是否已移除?
    • @Tejas:AFAIK,没有。
    • 我可以验证 CommonsWare 的答案。应用程序更新不会删除之前提供给 AlarmManager 的待处理缩进。应用更新后,之前安排的重复警报会正常触发。
    【解决方案2】:

    如果您希望提醒在卸载后仍然存在,您需要将它们添加到用户的 Google 日历(或创建日历)中

      Intent intent = new Intent(Intent.ACTION_INSERT)
                .setData(CalendarContract.Events.CONTENT_URI)
                .putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, reminderDateTime.getMillis())
                .putExtra(CalendarContract.EXTRA_EVENT_END_TIME, reminderDateTime.getMillis())
                .putExtra(CalendarContract.Events.TITLE, "TITLE"
                .putExtra(CalendarContract.Events.DESCRIPTION, eventDescription)
                .putExtra(CalendarContract.Events.HAS_ALARM, true)
                .putExtra(CalendarContract.Events.ALLOWED_REMINDERS, new int[]{CalendarContract.Reminders.METHOD_ALARM, CalendarContract.Reminders.METHOD_ALERT})
                .putExtra(CalendarContract.Events.AVAILABILITY, CalendarContract.Events.AVAILABILITY_BUSY);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多