diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:31:44 -0800 |
commit | 9066cfe9886ac131c34d59ed0e2d287b0e3c0087 (patch) | |
tree | d88beb88001f2482911e3d28e43833b50e4b4e97 /core/java/android/app/NotificationManager.java | |
parent | d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (diff) | |
download | frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.zip frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.gz frameworks_base-9066cfe9886ac131c34d59ed0e2d287b0e3c0087.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/app/NotificationManager.java')
-rw-r--r-- | core/java/android/app/NotificationManager.java | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java new file mode 100644 index 0000000..39edab7 --- /dev/null +++ b/core/java/android/app/NotificationManager.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.app; + +import android.content.Context; +import android.os.RemoteException; +import android.os.Handler; +import android.os.IBinder; +import android.os.ServiceManager; +import android.util.Log; + +/** + * Class to notify the user of events that happen. This is how you tell + * the user that something has happened in the background. {@more} + * + * Notifications can take different forms: + * <ul> + * <li>A persistent icon that goes in the status bar and is accessible + * through the launcher, (when the user selects it, a designated Intent + * can be launched),</li> + * <li>Turning on or flashing LEDs on the device, or</li> + * <li>Alerting the user by flashing the backlight, playing a sound, + * or vibrating.</li> + * </ul> + * + * <p> + * Each of the notify methods takes an int id parameter. This id identifies + * this notification from your app to the system, so that id should be unique + * within your app. If you call one of the notify methods with an id that is + * currently active and a new set of notification parameters, it will be + * updated. For example, if you pass a new status bar icon, the old icon in + * the status bar will be replaced with the new one. This is also the same + * id you pass to the {@link #cancel} method to clear this notification. + * + * <p> + * You do not instantiate this class directly; instead, retrieve it through + * {@link android.content.Context#getSystemService}. + * + * @see android.app.Notification + * @see android.content.Context#getSystemService + */ +public class NotificationManager +{ + private static String TAG = "NotificationManager"; + private static boolean DEBUG = false; + private static boolean localLOGV = DEBUG || android.util.Config.LOGV; + + private static INotificationManager sService; + + static private INotificationManager getService() + { + if (sService != null) { + return sService; + } + IBinder b = ServiceManager.getService("notification"); + sService = INotificationManager.Stub.asInterface(b); + return sService; + } + + /*package*/ NotificationManager(Context context, Handler handler) + { + mContext = context; + } + + /** + * Persistent notification on the status bar, + * + * @param id An identifier for this notification unique within your + * application. + * @param notification A {@link Notification} object describing how to + * notify the user, other than the view you're providing. Must not be null. + */ + public void notify(int id, Notification notification) + { + int[] idOut = new int[1]; + INotificationManager service = getService(); + String pkg = mContext.getPackageName(); + if (localLOGV) Log.v(TAG, pkg + ": notify(" + id + ", " + notification + ")"); + try { + service.enqueueNotification(pkg, id, notification, idOut); + if (id != idOut[0]) { + Log.w(TAG, "notify: id corrupted: sent " + id + ", got back " + idOut[0]); + } + } catch (RemoteException e) { + } + } + + /** + * Cancel a previously shown notification. If it's transient, the view + * will be hidden. If it's persistent, it will be removed from the status + * bar. + */ + public void cancel(int id) + { + INotificationManager service = getService(); + String pkg = mContext.getPackageName(); + if (localLOGV) Log.v(TAG, pkg + ": cancel(" + id + ")"); + try { + service.cancelNotification(pkg, id); + } catch (RemoteException e) { + } + } + + /** + * Cancel all previously shown notifications. See {@link #cancel} for the + * detailed behavior. + */ + public void cancelAll() + { + INotificationManager service = getService(); + String pkg = mContext.getPackageName(); + if (localLOGV) Log.v(TAG, pkg + ": cancelAll()"); + try { + service.cancelAllNotifications(pkg); + } catch (RemoteException e) { + } + } + + private Context mContext; +} |