package com.v7lin.android.env; import android.content.Context; import android.content.res.Resources; /** * * * @author v7lin Email:v7lin@qq.com */ public abstract class EnvSystemResourcesWrapper extends EnvResourcesWrapper { private final Context mContext; private SystemResMap mSystemResMap = NullResMap.getInstance(); public EnvSystemResourcesWrapper(Context context, Resources res, EnvResourcesManager manager) { super(context, res, manager); mContext = context; } public void setSystemResMap(SystemResMap resMap) { mSystemResMap = resMap != null ? resMap : NullResMap.getInstance(); } protected final EnvRes mappingSystemRes(int resid) { final String resourcePackageName = super.getResourcePackageName(resid); final String resourceTypeName = super.getResourceTypeName(resid); final String resourceEntryName = super.getResourceEntryName(resid); final int mappingid = mSystemResMap.mapping(mContext, resid, resourcePackageName, resourceTypeName, resourceEntryName); EnvRes res = new EnvRes(mappingid); return res.isValid() ? res : null; } @Override public String getResourceName(int resid) throws NotFoundException { EnvRes mapping = mappingSystemRes(resid); if (mapping != null && mapping.isValid()) { return super.getResourceName(mapping.getResid()); } return super.getResourceName(resid); } @Override public String getResourcePackageName(int resid) throws NotFoundException { EnvRes mapping = mappingSystemRes(resid); if (mapping != null && mapping.isValid()) { return super.getResourcePackageName(mapping.getResid()); } return super.getResourcePackageName(resid); } @Override public String getResourceTypeName(int resid) throws NotFoundException { EnvRes mapping = mappingSystemRes(resid); if (mapping != null && mapping.isValid()) { return super.getResourceTypeName(mapping.getResid()); } return super.getResourceTypeName(resid); } @Override public String getResourceEntryName(int resid) throws NotFoundException { EnvRes mapping = mappingSystemRes(resid); if (mapping != null && mapping.isValid()) { return super.getResourceEntryName(mapping.getResid()); } return super.getResourceEntryName(resid); } }