Как получить реальную модель устройства в Android?
Например, на моем телефоне Xperia mini,
- построить.Модель возвращает 'st15i'
- построить.Производитель возвращает 'Sony Ericsson'
Но я хочу получить "Sony Ericsson xperia mini" для этого телефона.
Возможно ли это?
2 ответа:
Для этого конкретного телефона (и, возможно, для многих других телефонов SonyEricsson) вы можете получить реальное имя устройства, только прочитав системное свойство, которое вы упомянули:
ro.semc.product.model
Поскольку класс
android.os.SystemProperties
скрыт от публичного API, вам нужно будет использовать команду reflection (или execgetprop ro.semc.product.model
) и захватить ее выход):public String getSonyEricssonDeviceName() { String model = getSystemProperty("ro.semc.product.model"); return (model == null) ? "" : model; } private String getSystemProperty(String propName) { Class<?> clsSystemProperties = tryClassForName("android.os.SystemProperties"); Method mtdGet = tryGetMethod(clsSystemProperties, "get", String.class); return tryInvoke(mtdGet, null, propName); } private Class<?> tryClassForName(String className) { try { return Class.forName(className); } catch (ClassNotFoundException e) { return null; } } private Method tryGetMethod(Class<?> cls, String name, Class<?>... parameterTypes) { try { return cls.getDeclaredMethod(name, parameterTypes); } catch (Exception e) { return null; } } @SuppressWarnings("unchecked") private <T> T tryInvoke(Method m, Object object, Object... args) { try { return (T) m.invoke(object, args); } catch (InvocationTargetException e) { throw new RuntimeException(e); } catch (Exception e) { return null; } }