Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cordova-plugin-local-notifications
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nabil Sadki
cordova-plugin-local-notifications
Commits
5d6a0c79
Commit
5d6a0c79
authored
Aug 31, 2013
by
Sebastián Katzer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactored LocalNotification class
parent
cf5763c0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
83 additions
and
105 deletions
+83
-105
LocalNotification.java
src/android/LocalNotification.java
+83
-105
No files found.
src/android/LocalNotification.java
View file @
5d6a0c79
package
de
.
appplant
.
cordova
.
plugin
;
/**
* LocalNotification.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
*/
import
java.util.Calendar
;
package
de
.
appplant
.
cordova
.
plugin
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
android.content.Context
;
import
android.content.SharedPreferences
;
import
android.content.SharedPreferences.Editor
;
import
android.util.Log
;
import
com.phonegap.api.
Plugin
;
import
com.phonegap.api.PluginResul
t
;
import
org.apache.cordova.Cordova
Plugin
;
import
org.apache.cordova.CallbackContex
t
;
/**
* This plugin utilizes the Android AlarmManager in combination with StatusBar
* notifications. When a local notification is scheduled the alarm manager takes
* care of firing the event. When the event is processed, a notification is put
* in the Android status bar.
*
* @author Daniel van 't Oever
*/
public
class
LocalNotification
extends
Plugin
{
public
class
LocalNotification
extends
Cordova
Plugin
{
public
static
final
String
PLUGIN_NAME
=
"LocalNotification"
;
...
...
@@ -31,36 +37,40 @@ public class LocalNotification extends Plugin {
private
AlarmHelper
alarm
=
null
;
@Override
public
PluginResult
execute
(
String
action
,
JSONArray
optionsArr
,
String
callBackId
)
{
alarm
=
new
AlarmHelper
(
this
.
ctx
);
Log
.
d
(
PLUGIN_NAME
,
"Plugin execute called with action: "
+
action
);
PluginResult
result
=
null
;
final
AlarmOptions
alarmOptions
=
new
AlarmOptions
();
alarmOptions
.
parseOptions
(
optionsArr
);
/*
* Determine which action of the plugin needs to be invoked
*/
String
alarmId
=
alarmOptions
.
getNotificationId
();
if
(
action
.
equalsIgnoreCase
(
"add"
))
{
final
boolean
daily
=
alarmOptions
.
isRepeatDaily
();
final
String
title
=
alarmOptions
.
getAlarmTitle
();
final
String
subTitle
=
alarmOptions
.
getAlarmSubTitle
();
final
String
ticker
=
alarmOptions
.
getAlarmTicker
();
persistAlarm
(
alarmId
,
optionsArr
);
return
this
.
add
(
daily
,
title
,
subTitle
,
ticker
,
alarmId
,
alarmOptions
.
getCal
());
}
else
if
(
action
.
equalsIgnoreCase
(
"cancel"
))
{
unpersistAlarm
(
alarmId
);
return
this
.
cancelNotification
(
alarmId
);
}
else
if
(
action
.
equalsIgnoreCase
(
"cancelall"
))
{
unpersistAlarmAll
();
return
this
.
cancelAllNotifications
();
}
return
result
;
public
boolean
execute
(
String
action
,
JSONArray
args
,
CallbackContext
callbackContext
)
throws
JSONException
{
JSONObject
arguments
=
args
.
getJSONObject
(
0
);
LocalNotificationOptions
options
=
new
LocalNotificationOptions
();
options
.
parse
(
arguments
);
String
alarmId
=
options
.
getNotificationId
();
alarm
=
new
AlarmHelper
(
cordova
.
getActivity
());
if
(
action
.
equalsIgnoreCase
(
"add"
))
{
persist
(
alarmId
,
args
);
add
(
options
);
return
true
;
}
if
(
action
.
equalsIgnoreCase
(
"cancel"
))
{
unpersist
(
alarmId
);
cancel
(
alarmId
);
return
true
;
}
if
(
action
.
equalsIgnoreCase
(
"cancelall"
))
{
unpersistAll
();
cancelAll
();
return
true
;
}
// Returning false results in a "MethodNotFound" error.
return
false
;
}
/**
...
...
@@ -68,32 +78,19 @@ public class LocalNotification extends Plugin {
*
* @param repeatDaily
* If true, the alarm interval will be set to one day.
* @param
alarmT
itle
* @param
t
itle
* The title of the alarm as shown in the Android notification
* panel
* @param
alarmS
ubTitle
* @param
s
ubTitle
* The subtitle of the alarm
* @param alarmId
* The unique ID of the notification
* @param cal
* @param cal
ender
* A calendar object that represents the time at which the alarm
* should first be started
* @return A pluginresult.
*/
public
PluginResult
add
(
boolean
repeatDaily
,
String
alarmTitle
,
String
alarmSubTitle
,
String
alarmTicker
,
String
alarmId
,
Calendar
cal
)
{
final
long
triggerTime
=
cal
.
getTimeInMillis
();
final
String
recurring
=
repeatDaily
?
"daily"
:
"onetime"
;
Log
.
d
(
PLUGIN_NAME
,
"Adding "
+
recurring
+
" notification: '"
+
alarmTitle
+
alarmSubTitle
+
"' with id: "
+
alarmId
+
" at timestamp: "
+
triggerTime
);
boolean
result
=
alarm
.
addAlarm
(
repeatDaily
,
alarmTitle
,
alarmSubTitle
,
alarmTicker
,
alarmId
,
cal
);
if
(
result
)
{
return
new
PluginResult
(
PluginResult
.
Status
.
OK
);
}
else
{
return
new
PluginResult
(
PluginResult
.
Status
.
ERROR
);
}
public
void
add
(
LocalNotificationOptions
options
)
{
alarm
.
add
(
options
);
}
/**
...
...
@@ -101,86 +98,66 @@ public class LocalNotification extends Plugin {
*
* @param notificationId
* The original ID of the notification that was used when it was
* registered using add
Notification
()
* registered using add()
*/
public
PluginResult
cancelNotification
(
String
notificationId
)
{
Log
.
d
(
PLUGIN_NAME
,
"cancelNotification: Canceling event with id: "
+
notificationId
);
boolean
result
=
alarm
.
cancelAlarm
(
notificationId
);
if
(
result
)
{
return
new
PluginResult
(
PluginResult
.
Status
.
OK
);
}
else
{
return
new
PluginResult
(
PluginResult
.
Status
.
ERROR
);
}
public
void
cancel
(
String
notificationId
)
{
alarm
.
cancel
(
notificationId
);
}
/**
* Cancel all notifications that were created by this plugin.
*/
public
PluginResult
cancelAllNotifications
()
{
Log
.
d
(
PLUGIN_NAME
,
"cancelAllNotifications: cancelling all events for this application"
);
/*
* Android can only unregister a specific alarm. There is no such thing
* as cancelAll. Therefore we rely on the Shared Preferences which holds
* all our alarms to loop through these alarms and unregister them one
* by one.
*/
final
SharedPreferences
alarmSettings
=
this
.
ctx
.
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
);
final
boolean
result
=
alarm
.
cancelAll
(
alarmSettings
);
if
(
result
)
{
return
new
PluginResult
(
PluginResult
.
Status
.
OK
);
}
else
{
return
new
PluginResult
(
PluginResult
.
Status
.
ERROR
);
}
public
void
cancelAll
()
{
/*
* Android can only unregister a specific alarm. There is no such thing
* as cancelAll. Therefore we rely on the Shared Preferences which holds
* all our alarms to loop through these alarms and unregister them one
* by one.
*/
SharedPreferences
settings
=
cordova
.
getActivity
().
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
);
alarm
.
cancelAll
(
settings
);
}
/**
* Persist the information of this alarm to the Android Shared Preferences.
* This will allow the application to restore the alarm upon device reboot.
* Also this is used by the cancelAll
Notifications
method.
* Also this is used by the cancelAll method.
*
* @see #cancelAllNotifications()
*
* @param optionsArr
* The assumption is that parse
Options
has been called already.
* The assumption is that parse has been called already.
*
* @return true when successfull, otherwise false
*/
private
boolean
persistAlarm
(
String
alarmId
,
JSONArray
optionsArr
)
{
final
Editor
alarmSettingsEditor
=
this
.
ctx
.
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
).
edit
();
alarmSettingsEditor
.
putString
(
alarmId
,
optionsArr
.
toString
());
private
void
persist
(
String
alarmId
,
JSONArray
optionsArr
)
{
Editor
editor
=
cordova
.
getActivity
().
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
).
edit
();
return
alarmSettingsEditor
.
commit
();
editor
.
putString
(
alarmId
,
optionsArr
.
toString
());
editor
.
commit
();
}
/**
* Remove a specific alarm from the Android shared Preferences
* Remove a specific alarm from the Android shared Preferences
.
*
* @param alarmId
* The Id of the notification that must be removed.
*
* @return true when successfull, otherwise false
*/
private
boolean
unpersistAlarm
(
String
alarmId
)
{
final
Editor
alarmSettingsEditor
=
this
.
ctx
.
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
).
edit
();
alarmSettingsEditor
.
remove
(
alarmId
);
private
void
unpersist
(
String
alarmId
)
{
Editor
editor
=
cordova
.
getActivity
().
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
).
edit
();
return
alarmSettingsEditor
.
commit
();
editor
.
remove
(
alarmId
);
editor
.
commit
();
}
/**
* Clear all alarms from the Android shared Preferences
*
* @return true when successfull, otherwise false
* Clear all alarms from the Android shared Preferences.
*/
private
boolean
unpersistAlarmAll
()
{
final
Editor
alarmSettingsEditor
=
this
.
ctx
.
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
).
edit
();
alarmSettingsEditor
.
clear
();
private
void
unpersistAll
()
{
Editor
editor
=
cordova
.
getActivity
().
getSharedPreferences
(
PLUGIN_NAME
,
Context
.
MODE_PRIVATE
).
edit
();
return
alarmSettingsEditor
.
commit
();
editor
.
clear
();
editor
.
commit
();
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment