diff options
Diffstat (limited to 'services/core/java/com/android/server/ThemeService.java')
-rw-r--r-- | services/core/java/com/android/server/ThemeService.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/ThemeService.java b/services/core/java/com/android/server/ThemeService.java index 5ec0df6..9d4c182 100644 --- a/services/core/java/com/android/server/ThemeService.java +++ b/services/core/java/com/android/server/ThemeService.java @@ -126,6 +126,7 @@ public class ThemeService extends IThemeService.Stub { private class ThemeWorkerHandler extends Handler { private static final int MESSAGE_CHANGE_THEME = 1; private static final int MESSAGE_APPLY_DEFAULT_THEME = 2; + private static final int MESSAGE_REBUILD_RESOURCE_CACHE = 3; public ThemeWorkerHandler(Looper looper) { super(looper); @@ -141,6 +142,9 @@ public class ThemeService extends IThemeService.Stub { case MESSAGE_APPLY_DEFAULT_THEME: doApplyDefaultTheme(); break; + case MESSAGE_REBUILD_RESOURCE_CACHE: + doRebuildResourceCache(); + break; default: Log.w(TAG, "Unknown message " + msg.what); break; @@ -469,6 +473,11 @@ public class ThemeService extends IThemeService.Stub { } } + private void doRebuildResourceCache() { + FileUtils.deleteContents(new File(ThemeUtils.RESOURCE_CACHE_DIR)); + processInstalledThemes(); + } + private void updateProvider(Map<String, String> componentMap) { ContentValues values = new ContentValues(); @@ -1040,6 +1049,13 @@ public class ThemeService extends IThemeService.Stub { mProcessingListeners.unregister(listener); } + @Override + public void rebuildResourceCache() throws RemoteException { + mContext.enforceCallingOrSelfPermission( + Manifest.permission.ACCESS_THEME_MANAGER, null); + mHandler.sendEmptyMessage(ThemeWorkerHandler.MESSAGE_REBUILD_RESOURCE_CACHE); + } + private void purgeIconCache() { Log.d(TAG, "Purging icon cahe of size " + mIconCacheSize); File cacheDir = new File(ThemeUtils.SYSTEM_THEME_ICON_CACHE_DIR); |