AbstractRestoreReceiver.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright (c) 2014-2015 by appPlant UG. All rights reserved.
  3. *
  4. * @APPPLANT_LICENSE_HEADER_START@
  5. *
  6. * This file contains Original Code and/or Modifications of Original Code
  7. * as defined in and that are subject to the Apache License
  8. * Version 2.0 (the 'License'). You may not use this file except in
  9. * compliance with the License. Please obtain a copy of the License at
  10. * http://opensource.org/licenses/Apache-2.0/ and read it before using this
  11. * file.
  12. *
  13. * The Original Code and all software distributed under the License are
  14. * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  15. * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  16. * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  17. * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  18. * Please see the License for the specific language governing rights and
  19. * limitations under the License.
  20. *
  21. * @APPPLANT_LICENSE_HEADER_END@
  22. */
  23. package de.appplant.cordova.plugin.notification.receiver;
  24. import android.content.BroadcastReceiver;
  25. import android.content.Context;
  26. import android.content.Intent;
  27. import org.json.JSONObject;
  28. import java.util.List;
  29. import de.appplant.cordova.plugin.notification.Builder;
  30. import de.appplant.cordova.plugin.notification.Manager;
  31. import de.appplant.cordova.plugin.notification.Notification;
  32. import de.appplant.cordova.plugin.notification.Options;
  33. import de.appplant.cordova.plugin.notification.Request;
  34. import static android.content.Intent.ACTION_BOOT_COMPLETED;
  35. import static android.os.Build.VERSION.SDK_INT;
  36. /**
  37. * This class is triggered upon reboot of the device. It needs to re-register
  38. * the alarms with the AlarmManager since these alarms are lost in case of
  39. * reboot.
  40. */
  41. abstract public class AbstractRestoreReceiver extends BroadcastReceiver {
  42. /**
  43. * Called on device reboot.
  44. *
  45. * @param context Application context
  46. * @param intent Received intent with content data
  47. */
  48. @Override
  49. public void onReceive (Context context, Intent intent) {
  50. String action = intent.getAction();
  51. if (action.equals(ACTION_BOOT_COMPLETED) && SDK_INT >= 24)
  52. return;
  53. Manager mgr = Manager.getInstance(context);
  54. List<JSONObject> toasts = mgr.getOptions();
  55. for (JSONObject data : toasts) {
  56. Options options = new Options(context, data);
  57. Request request = new Request(options);
  58. Builder builder = new Builder(options);
  59. Notification toast = buildNotification(builder);
  60. onRestore(request, toast);
  61. }
  62. }
  63. /**
  64. * Called when a local notification need to be restored.
  65. *
  66. * @param request Set of notification options.
  67. * @param toast Wrapper around the local notification.
  68. */
  69. abstract public void onRestore (Request request, Notification toast);
  70. /**
  71. * Build notification specified by options.
  72. *
  73. * @param builder Notification builder.
  74. */
  75. abstract public Notification buildNotification (Builder builder);
  76. }