diff options
author | Hung-ying Tyan <tyanh@google.com> | 2011-01-18 22:39:20 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-18 22:39:20 -0800 |
commit | 9a07c990d305243d1b9b8557fea96f273c46dc0f (patch) | |
tree | a3986747ea7a9f60e3c8c48a28fbe087caa57fb7 /packages | |
parent | 5fb60c7af2cbf59a99ae324c4284c7860b37c723 (diff) | |
parent | f14491f6969ea7fd41fbd291008d7352982a9dad (diff) | |
download | frameworks_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.java | 38 |
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) { |