diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/org/cyanogenmod/themes/provider/ThemesProvider.java | 1 | ||||
-rw-r--r-- | src/org/cyanogenmod/themes/provider/util/PreviewUtils.java | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemesProvider.java b/src/org/cyanogenmod/themes/provider/ThemesProvider.java index f263881..61828fb 100644 --- a/src/org/cyanogenmod/themes/provider/ThemesProvider.java +++ b/src/org/cyanogenmod/themes/provider/ThemesProvider.java @@ -232,6 +232,7 @@ public class ThemesProvider extends ContentProvider { */ mHandler.post(new Runnable() { public void run() { + PreviewUtils.ensureCorrectPreviewPermissions(getContext()); new VerifyInstalledThemesThread().start(); } }); diff --git a/src/org/cyanogenmod/themes/provider/util/PreviewUtils.java b/src/org/cyanogenmod/themes/provider/util/PreviewUtils.java index de86092..cda7683 100644 --- a/src/org/cyanogenmod/themes/provider/util/PreviewUtils.java +++ b/src/org/cyanogenmod/themes/provider/util/PreviewUtils.java @@ -15,6 +15,7 @@ */ package org.cyanogenmod.themes.provider.util; +import android.content.Context; import android.graphics.Bitmap; import android.os.FileUtils; import android.util.Log; @@ -46,6 +47,26 @@ public class PreviewUtils { return baseDir + File.separator + PREVIEWS_DIR; } + public static void ensureCorrectPreviewPermissions(Context context) { + File previewsDir = new File(getPreviewsDir(context.getFilesDir().getAbsolutePath())); + if (previewsDir.exists()) { + ensureCorrectPreviewPermissions(previewsDir); + } + } + + private static void ensureCorrectPreviewPermissions(File file) { + int mode = 0; + if (file.isDirectory()) { + for (File f : file.listFiles()) { + ensureCorrectPreviewPermissions(f); + } + mode = FileUtils.S_IRWXU | FileUtils.S_IRWXG | FileUtils.S_IROTH | FileUtils.S_IXOTH; + } else { + mode = FileUtils.S_IRWXU | FileUtils.S_IRWXG | FileUtils.S_IROTH; + } + FileUtils.setPermissions(file, mode, -1, -1); + } + private static String saveCompressedImage(byte[] image, String baseDir, String pkgName, String fileName) { if (image == null) return null; |