diff options
Diffstat (limited to 'core/java/android/app/ApplicationContext.java')
-rw-r--r-- | core/java/android/app/ApplicationContext.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/core/java/android/app/ApplicationContext.java b/core/java/android/app/ApplicationContext.java index 98bbf7b..34aeca1 100644 --- a/core/java/android/app/ApplicationContext.java +++ b/core/java/android/app/ApplicationContext.java @@ -92,6 +92,8 @@ import android.view.LayoutInflater; import android.view.WindowManagerImpl; import android.view.accessibility.AccessibilityManager; import android.view.inputmethod.InputMethodManager; +import android.accounts.AccountManager; +import android.accounts.IAccountManager; import java.io.File; import java.io.FileInputStream; @@ -150,6 +152,7 @@ class ApplicationContext extends Context { private final static boolean DEBUG_ICONS = false; private static final Object sSync = new Object(); + private static AccountManager sAccountManager; private static AlarmManager sAlarmManager; private static PowerManager sPowerManager; private static ConnectivityManager sConnectivityManager; @@ -882,6 +885,8 @@ class ApplicationContext extends Context { return getActivityManager(); } else if (ALARM_SERVICE.equals(name)) { return getAlarmManager(); + } else if (ACCOUNT_SERVICE.equals(name)) { + return getAccountManager(); } else if (POWER_SERVICE.equals(name)) { return getPowerManager(); } else if (CONNECTIVITY_SERVICE.equals(name)) { @@ -924,6 +929,17 @@ class ApplicationContext extends Context { return null; } + private AccountManager getAccountManager() { + synchronized (sSync) { + if (sAccountManager == null) { + IBinder b = ServiceManager.getService(ACCOUNT_SERVICE); + IAccountManager service = IAccountManager.Stub.asInterface(b); + sAccountManager = new AccountManager(this, service); + } + } + return sAccountManager; + } + private ActivityManager getActivityManager() { synchronized (mSync) { if (mActivityManager == null) { |