package com.tencent.tws.assistant.utils; import java.lang.reflect.Field; import android.content.res.Resources; import com.tencent.tws.framework.HostProxy; public class ResIdentifierUtils { private static Resources sApplicationRes = null; private static void ensureRes() { if (sApplicationRes == null) { sApplicationRes = HostProxy.getApplication().getResources(); } } public static int getSysId(String name) { ensureRes(); if (sApplicationRes == null) return 0; return sApplicationRes.getIdentifier(name, "id", "android"); } public static int getSysAttrId(String name) { ensureRes(); if (sApplicationRes == null) return 0; return sApplicationRes.getIdentifier(name, "attr", "android"); } public static int getSysBoolId(String name) { ensureRes(); if (sApplicationRes == null) return 0; return sApplicationRes.getIdentifier(name, "bool", "android"); } public static int getSysDimenId(String name) { ensureRes(); if (sApplicationRes == null) return 0; return sApplicationRes.getIdentifier(name, "dimen", "android"); } public static int getSysLayoutId(String name) { ensureRes(); if (sApplicationRes == null) return 0; return sApplicationRes.getIdentifier(name, "layout", "android"); } public static int getSysStringId(String name) { ensureRes(); if (sApplicationRes == null) return 0; return sApplicationRes.getIdentifier(name, "string", "android"); } public static int[] getSysStyleableId(String name) { String className = "com.android.internal.R"; try { Class<?> cls = Class.forName(className); for (Class<?> childClass : cls.getClasses()) { String simple = childClass.getSimpleName(); if (simple.equals("styleable")) { for (Field field : childClass.getFields()) { String fieldName = field.getName(); if (fieldName.equals(name)) { System.out.println(fieldName); return (int[]) field.get(null); } } } } } catch (Exception e) { e.printStackTrace(); } return null; } }