summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2011-01-18 22:39:20 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-18 22:39:20 -0800
commit9a07c990d305243d1b9b8557fea96f273c46dc0f (patch)
treea3986747ea7a9f60e3c8c48a28fbe087caa57fb7 /packages
parent5fb60c7af2cbf59a99ae324c4284c7860b37c723 (diff)
parentf14491f6969ea7fd41fbd291008d7352982a9dad (diff)
downloadframeworks_base-9a07c990d305243d1b9b8557fea96f273c46dc0f.zip
frameworks_base-9a07c990d305243d1b9b8557fea96f273c46dc0f.tar.gz
frameworks_base-9a07c990d305243d1b9b8557fea96f273c46dc0f.tar.bz2
Merge "Cherry-pick "Fix VPN notification helper" from master." into honeycomb
Diffstat (limited to 'packages')
-rw-r--r--packages/VpnServices/src/com/android/server/vpn/VpnService.java38
1 files changed, 23 insertions, 15 deletions
diff --git a/packages/VpnServices/src/com/android/server/vpn/VpnService.java b/packages/VpnServices/src/com/android/server/vpn/VpnService.java
index 63b87b1..a618423 100644
--- a/packages/VpnServices/src/com/android/server/vpn/VpnService.java
+++ b/packages/VpnServices/src/com/android/server/vpn/VpnService.java
@@ -328,6 +328,7 @@ abstract class VpnService<E extends VpnProfile> implements Serializable {
public void run() {
Log.i(TAG, "VPN connectivity monitor running");
try {
+ mNotification.update(mStartTime); // to pop up notification
for (int i = 10; ; i--) {
long now = System.currentTimeMillis();
@@ -417,13 +418,27 @@ abstract class VpnService<E extends VpnProfile> implements Serializable {
// Helper class for showing, updating notification.
private class NotificationHelper {
+ private NotificationManager mNotificationManager = (NotificationManager)
+ mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ private Notification mNotification =
+ new Notification(R.drawable.vpn_connected, null, 0L);
+ private PendingIntent mPendingIntent = PendingIntent.getActivity(
+ mContext, 0,
+ new VpnManager(mContext).createSettingsActivityIntent(), 0);
+ private String mConnectedTitle;
+
void update(long now) {
- String title = getNotificationTitle(true);
- Notification n = new Notification(R.drawable.vpn_connected, title,
- mStartTime);
- n.setLatestEventInfo(mContext, title,
+ Notification n = mNotification;
+ if (now == mStartTime) {
+ // to pop up the notification for the first time
+ n.when = mStartTime;
+ n.tickerText = mConnectedTitle = getNotificationTitle(true);
+ } else {
+ n.tickerText = null;
+ }
+ n.setLatestEventInfo(mContext, mConnectedTitle,
getConnectedNotificationMessage(now),
- prepareNotificationIntent());
+ mPendingIntent);
n.flags |= Notification.FLAG_NO_CLEAR;
n.flags |= Notification.FLAG_ONGOING_EVENT;
enableNotification(n);
@@ -435,25 +450,18 @@ abstract class VpnService<E extends VpnProfile> implements Serializable {
title, System.currentTimeMillis());
n.setLatestEventInfo(mContext, title,
getDisconnectedNotificationMessage(),
- prepareNotificationIntent());
+ mPendingIntent);
n.flags |= Notification.FLAG_AUTO_CANCEL;
disableNotification();
enableNotification(n);
}
void disableNotification() {
- ((NotificationManager) mContext.getSystemService(
- Context.NOTIFICATION_SERVICE)).cancel(NOTIFICATION_ID);
+ mNotificationManager.cancel(NOTIFICATION_ID);
}
private void enableNotification(Notification n) {
- ((NotificationManager) mContext.getSystemService(
- Context.NOTIFICATION_SERVICE)).notify(NOTIFICATION_ID, n);
- }
-
- private PendingIntent prepareNotificationIntent() {
- return PendingIntent.getActivity(mContext, 0,
- new VpnManager(mContext).createSettingsActivityIntent(), 0);
+ mNotificationManager.notify(NOTIFICATION_ID, n);
}
private String getNotificationTitle(boolean connected) {