Loading plugin.xml +17 −0 Changes for plugin.xml: 17 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -44,7 +44,24 @@ </config-file> <config-file target="AndroidManifest.xml" parent="/manifest/application"> <!-- * The alarm receiver is triggered when a scheduled alarm is fired. This class * reads the information in the intent and displays this information in the * Android notification bar. The notification uses the default notification * sound and it vibrates the phone. --> <receiver android:name="de.appplant.cordova.plugin.LocalNotificationReceiver" /> <!-- * This class is triggered upon reboot of the device. It needs to re-register * the alarms with the AlarmManager since these alarms are lost in case of * reboot. --> <receiver android:name="de.appplant.cordova.plugin.LocalNotificationRestore" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </config-file> <config-file target="AndroidManifest.xml" parent="/manifest"> Loading src/android/LocalNotification.java +12 −8 Changes for src/android/LocalNotification.java: 12 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.app.PendingIntent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CallbackContext; Loading @@ -36,11 +37,15 @@ public class LocalNotification extends CordovaPlugin { public static final String PLUGIN_NAME = "LocalNotification"; public static CordovaInterface cordova = null; @Override public boolean execute (String action, JSONArray args, CallbackContext callbackContext) throws JSONException { JSONObject arguments = args.getJSONObject(0); LocalNotificationOptions options = new LocalNotificationOptions(arguments); LocalNotification.cordova = super.cordova; String alarmId = options.getId(); if (action.equalsIgnoreCase("add")) { Loading Loading @@ -74,14 +79,13 @@ public class LocalNotification extends CordovaPlugin { * @param options * The options that can be specified per alarm. */ private void add (LocalNotificationOptions options) { public static void add (LocalNotificationOptions options) { long triggerTime = options.getDate(); Intent intent = new Intent(cordova.getActivity(), LocalNotificationReceiver.class); intent.setAction("" + options.getId()); intent.putExtra(LocalNotificationReceiver.OPTIONS, options.getJSONObject().toString()); /* Get the AlarmManager service */ AlarmManager am = getAlarmManager(); PendingIntent sender = PendingIntent.getBroadcast(cordova.getActivity(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); Loading @@ -99,7 +103,7 @@ public class LocalNotification extends CordovaPlugin { * The original ID of the notification that was used when it was * registered using add() */ private void cancel (String notificationId) { public static void cancel (String notificationId) { /* * Create an intent that looks similar, to the one that was registered * using add. Making sure the notification id in the action is the same. Loading @@ -126,7 +130,7 @@ public class LocalNotification extends CordovaPlugin { * all our alarms to loop through these alarms and unregister them one * by one. */ private void cancelAll() { public static void cancelAll() { SharedPreferences settings = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE); Map<String, ?> alarms = settings.getAll(); Set<String> alarmIds = alarms.keySet(); Loading @@ -144,7 +148,7 @@ public class LocalNotification extends CordovaPlugin { * @param args * The assumption is that parse has been called already. */ private void persist (String alarmId, JSONArray args) { public static void persist (String alarmId, JSONArray args) { Editor editor = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit(); if (alarmId != null) { Loading @@ -159,7 +163,7 @@ public class LocalNotification extends CordovaPlugin { * @param alarmId * The Id of the notification that must be removed. */ private void unpersist (String alarmId) { public static void unpersist (String alarmId) { Editor editor = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit(); if (alarmId != null) { Loading @@ -171,14 +175,14 @@ public class LocalNotification extends CordovaPlugin { /** * Clear all alarms from the Android shared Preferences. */ private void unpersistAll () { public static void unpersistAll () { Editor editor = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); } private AlarmManager getAlarmManager () { private static AlarmManager getAlarmManager () { return (AlarmManager) cordova.getActivity().getSystemService(Context.ALARM_SERVICE); } } No newline at end of file src/android/LocalNotificationRestore.java 0 → 100644 +57 −0 Changes for src/android/LocalNotificationRestore.java: 57 added lines, 0 removed lines. Original line number Diff line number Diff line /** * LocalNotificationRestore.java * Cordova LocalNotification Plugin * * Created by Sebastian Katzer (github.com/katzer) on 31/08/2013. * Copyright 2013 Sebastian Katzer. All rights reserved. * GPL v2 licensed */ package de.appplant.cordova.plugin; import java.util.Set; import org.json.JSONException; import org.json.JSONObject; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; /** * This class is triggered upon reboot of the device. It needs to re-register * the alarms with the AlarmManager since these alarms are lost in case of * reboot. */ public class LocalNotificationRestore extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String pluginName = LocalNotification.PLUGIN_NAME; if (LocalNotification.cordova == null) { return; } // Obtain alarm details form Shared Preferences SharedPreferences alarms = context.getSharedPreferences(pluginName, Context.MODE_PRIVATE); Set<String> alarmIds = alarms.getAll().keySet(); /* * For each alarm, parse its alarm options and register is again with * the Alarm Manager */ for (String alarmId : alarmIds) { LocalNotificationOptions options; JSONObject args; try { args = new JSONObject(alarms.getString(alarmId, "")); options = new LocalNotificationOptions(args); LocalNotification.add(options); } catch (JSONException e) {} } } } Loading
plugin.xml +17 −0 Changes for plugin.xml: 17 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -44,7 +44,24 @@ </config-file> <config-file target="AndroidManifest.xml" parent="/manifest/application"> <!-- * The alarm receiver is triggered when a scheduled alarm is fired. This class * reads the information in the intent and displays this information in the * Android notification bar. The notification uses the default notification * sound and it vibrates the phone. --> <receiver android:name="de.appplant.cordova.plugin.LocalNotificationReceiver" /> <!-- * This class is triggered upon reboot of the device. It needs to re-register * the alarms with the AlarmManager since these alarms are lost in case of * reboot. --> <receiver android:name="de.appplant.cordova.plugin.LocalNotificationRestore" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </config-file> <config-file target="AndroidManifest.xml" parent="/manifest"> Loading
src/android/LocalNotification.java +12 −8 Changes for src/android/LocalNotification.java: 12 added lines, 8 removed lines. Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.app.PendingIntent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import org.apache.cordova.CordovaInterface; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.CallbackContext; Loading @@ -36,11 +37,15 @@ public class LocalNotification extends CordovaPlugin { public static final String PLUGIN_NAME = "LocalNotification"; public static CordovaInterface cordova = null; @Override public boolean execute (String action, JSONArray args, CallbackContext callbackContext) throws JSONException { JSONObject arguments = args.getJSONObject(0); LocalNotificationOptions options = new LocalNotificationOptions(arguments); LocalNotification.cordova = super.cordova; String alarmId = options.getId(); if (action.equalsIgnoreCase("add")) { Loading Loading @@ -74,14 +79,13 @@ public class LocalNotification extends CordovaPlugin { * @param options * The options that can be specified per alarm. */ private void add (LocalNotificationOptions options) { public static void add (LocalNotificationOptions options) { long triggerTime = options.getDate(); Intent intent = new Intent(cordova.getActivity(), LocalNotificationReceiver.class); intent.setAction("" + options.getId()); intent.putExtra(LocalNotificationReceiver.OPTIONS, options.getJSONObject().toString()); /* Get the AlarmManager service */ AlarmManager am = getAlarmManager(); PendingIntent sender = PendingIntent.getBroadcast(cordova.getActivity(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); Loading @@ -99,7 +103,7 @@ public class LocalNotification extends CordovaPlugin { * The original ID of the notification that was used when it was * registered using add() */ private void cancel (String notificationId) { public static void cancel (String notificationId) { /* * Create an intent that looks similar, to the one that was registered * using add. Making sure the notification id in the action is the same. Loading @@ -126,7 +130,7 @@ public class LocalNotification extends CordovaPlugin { * all our alarms to loop through these alarms and unregister them one * by one. */ private void cancelAll() { public static void cancelAll() { SharedPreferences settings = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE); Map<String, ?> alarms = settings.getAll(); Set<String> alarmIds = alarms.keySet(); Loading @@ -144,7 +148,7 @@ public class LocalNotification extends CordovaPlugin { * @param args * The assumption is that parse has been called already. */ private void persist (String alarmId, JSONArray args) { public static void persist (String alarmId, JSONArray args) { Editor editor = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit(); if (alarmId != null) { Loading @@ -159,7 +163,7 @@ public class LocalNotification extends CordovaPlugin { * @param alarmId * The Id of the notification that must be removed. */ private void unpersist (String alarmId) { public static void unpersist (String alarmId) { Editor editor = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit(); if (alarmId != null) { Loading @@ -171,14 +175,14 @@ public class LocalNotification extends CordovaPlugin { /** * Clear all alarms from the Android shared Preferences. */ private void unpersistAll () { public static void unpersistAll () { Editor editor = cordova.getActivity().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit(); editor.clear(); editor.commit(); } private AlarmManager getAlarmManager () { private static AlarmManager getAlarmManager () { return (AlarmManager) cordova.getActivity().getSystemService(Context.ALARM_SERVICE); } } No newline at end of file
src/android/LocalNotificationRestore.java 0 → 100644 +57 −0 Changes for src/android/LocalNotificationRestore.java: 57 added lines, 0 removed lines. Original line number Diff line number Diff line /** * LocalNotificationRestore.java * Cordova LocalNotification Plugin * * Created by Sebastian Katzer (github.com/katzer) on 31/08/2013. * Copyright 2013 Sebastian Katzer. All rights reserved. * GPL v2 licensed */ package de.appplant.cordova.plugin; import java.util.Set; import org.json.JSONException; import org.json.JSONObject; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; /** * This class is triggered upon reboot of the device. It needs to re-register * the alarms with the AlarmManager since these alarms are lost in case of * reboot. */ public class LocalNotificationRestore extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String pluginName = LocalNotification.PLUGIN_NAME; if (LocalNotification.cordova == null) { return; } // Obtain alarm details form Shared Preferences SharedPreferences alarms = context.getSharedPreferences(pluginName, Context.MODE_PRIVATE); Set<String> alarmIds = alarms.getAll().keySet(); /* * For each alarm, parse its alarm options and register is again with * the Alarm Manager */ for (String alarmId : alarmIds) { LocalNotificationOptions options; JSONObject args; try { args = new JSONObject(alarms.getString(alarmId, "")); options = new LocalNotificationOptions(args); LocalNotification.add(options); } catch (JSONException e) {} } } }