diff options
Diffstat (limited to 'services/java/com/android/server/SystemServer.java')
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index ab59aeb..b816843 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -25,11 +25,16 @@ import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.IPackageManager; import android.content.pm.PackageManager; +import android.content.pm.ThemeUtils; import android.content.res.Configuration; import android.content.res.Resources.Theme; import android.database.ContentObserver; import android.database.Cursor; +import android.content.res.ThemeConfig; +import android.database.ContentObserver; import android.os.Build; import android.os.Environment; import android.os.FactoryTest; @@ -564,6 +569,7 @@ public final class SystemServer { MediaRouterService mediaRouter = null; GestureService gestureService = null; EdgeGestureService edgeGestureService = null; + ThemeService themeService = null; // Bring up services needed for UI. if (mFactoryTestMode != FactoryTest.FACTORY_TEST_LOW_LEVEL) { @@ -991,6 +997,14 @@ public final class SystemServer { mSystemServiceManager.startService(TvInputManagerService.class); } + try { + Slog.i(TAG, "Theme Service"); + themeService = new ThemeService(context); + ServiceManager.addService(Context.THEME_SERVICE, themeService); + } catch (Throwable e) { + reportWtf("starting Theme Service", e); + } + if (!disableNonCoreServices) { try { Slog.i(TAG, "Media Router Service"); @@ -1137,6 +1151,16 @@ public final class SystemServer { } } + IntentFilter filter = new IntentFilter(); + filter.addAction(Intent.ACTION_APP_LAUNCH_FAILURE); + filter.addAction(Intent.ACTION_APP_LAUNCH_FAILURE_RESET); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addAction(ThemeUtils.ACTION_THEME_CHANGED); + filter.addCategory(Intent.CATEGORY_THEME_PACKAGE_INSTALLED_STATE_CHANGE); + filter.addDataScheme("package"); + context.registerReceiver(new AppsLaunchFailureReceiver(), filter); + // These are needed to propagate to the runnable below. final NetworkManagementService networkManagementF = networkManagement; final NetworkStatsService networkStatsF = networkStats; @@ -1157,6 +1181,7 @@ public final class SystemServer { final MediaRouterService mediaRouterF = mediaRouter; final AudioService audioServiceF = audioService; final MmsServiceBroker mmsServiceF = mmsService; + final ThemeService themeServiceF = themeService; // We now tell the activity manager it is okay to run third party // code. It will call back into us once it has gotten to the state @@ -1286,6 +1311,17 @@ public final class SystemServer { } catch (Throwable e) { reportWtf("Notifying MmsService running", e); } + + try { + // now that the system is up, apply default theme if applicable + if (themeServiceF != null) themeServiceF.systemRunning(); + ThemeConfig themeConfig = + ThemeConfig.getBootTheme(context.getContentResolver()); + String iconPkg = themeConfig.getIconPackPkgName(); + mPackageManagerService.updateIconMapping(iconPkg); + } catch (Throwable e) { + reportWtf("Icon Mapping failed", e); + } } }); } |