AbstractTriggerReceiver.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * Apache 2.0 License
  3. *
  4. * Copyright (c) Sebastian Katzer 2017
  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. package de.appplant.cordova.plugin.notification.receiver;
  22. import android.content.BroadcastReceiver;
  23. import android.content.Context;
  24. import android.content.Intent;
  25. import android.os.Bundle;
  26. import de.appplant.cordova.plugin.notification.Builder;
  27. import de.appplant.cordova.plugin.notification.Manager;
  28. import de.appplant.cordova.plugin.notification.Notification;
  29. import de.appplant.cordova.plugin.notification.Options;
  30. /**
  31. * Abstract broadcast receiver for local notifications. Creates the
  32. * notification options and calls the event functions for further proceeding.
  33. */
  34. abstract public class AbstractTriggerReceiver extends BroadcastReceiver {
  35. /**
  36. * Called when an alarm was triggered.
  37. *
  38. * @param context Application context
  39. * @param intent Received intent with content data
  40. */
  41. @Override
  42. public void onReceive(Context context, Intent intent) {
  43. Bundle bundle = intent.getExtras();
  44. int toastId = bundle.getInt(Notification.EXTRA_ID);
  45. Options options = Manager.getInstance(context).getOptions(toastId);
  46. if (options == null)
  47. return;
  48. Builder builder = new Builder(options);
  49. Notification toast = buildNotification(builder, bundle);
  50. if (toast == null)
  51. return;
  52. onTrigger(toast, bundle);
  53. }
  54. /**
  55. * Called when a local notification was triggered.
  56. *
  57. * @param notification Wrapper around the local notification.
  58. * @param bundle The bundled extras.
  59. */
  60. abstract public void onTrigger (Notification notification, Bundle bundle);
  61. /**
  62. * Build notification specified by options.
  63. *
  64. * @param builder Notification builder.
  65. * @param bundle The bundled extras.
  66. */
  67. abstract public Notification buildNotification (Builder builder,
  68. Bundle bundle);
  69. }