package net.dev123.yibo.common.theme; import net.dev123.commons.Constants; import net.dev123.commons.util.StringUtil; import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.ColorStateList; import android.graphics.drawable.Drawable; import android.util.Log; public abstract class AbsTheme { private static final String TAG = "AbsTheme"; public static final String PREFS_NAME_THEME_SETTING = "YIBO_THEME_SETTING"; public static final String PREFS_KEY_PACKAGE_NAME = "THEME_PACKAGE_NAME"; public static final String PREFS_KEY_RESOURCE_TYPE = "THEME_RESOURCE_TYPE"; public static final String PREFS_KEY_THEME_NAME = "THEME_NAME"; protected Context context; public AbsTheme(Context context) { this.context = context; } public abstract Drawable getDrawable(String resName); public abstract Drawable getDrawable(int resId); public abstract int getColor(String resName); public abstract int getColor(int resId); public abstract ColorStateList getColorStateList(String resName); public abstract ColorStateList getColorStateList(int resId); public void getTheme() { } public boolean isInstalled(String packageName) { boolean isInstalled = false; try { context.createPackageContext(packageName, Context.CONTEXT_IGNORE_SECURITY); isInstalled = true; } catch (NameNotFoundException e) { if (Constants.DEBUG) Log.e(TAG, e.getMessage(), e); } return isInstalled; } // public boolean isInstalled(String packageName) { // boolean isInstalled = false; // // List<PackageInfo> infoList = context.getPackageManager().getInstalledPackages(0); // for (PackageInfo info : infoList) { // if (info.packageName.equals(packageName)) { // isInstalled = true; // break; // } // } // // return isInstalled; // } protected Context getPackageContext(Context context, String packageName) { Context packageContext = null; if (StringUtil.isEmpty(packageName)) { return packageContext; } try { packageContext = context.createPackageContext( packageName, Context.CONTEXT_IGNORE_SECURITY); } catch (NameNotFoundException e) { if (Constants.DEBUG) Log.e(TAG, e.getMessage(), e); } return packageContext; } }