private CharSequence getCurrentRuntimeValue() { try { Class<?> systemProperties = Class.forName("android.os.SystemProperties"); try { Method get = systemProperties.getMethod("get", String.class, String.class); if (get == null) { return "WTF?!"; } try { final String value = (String)get.invoke( systemProperties, SELECT_RUNTIME_PROPERTY, /* Assuming default is */"Dalvik"); if (LIB_DALVIK.equals(value)) { return "Dalvik"; } else if (LIB_ART.equals(value)) { return "ART"; } else if (LIB_ART_D.equals(value)) { return "ART debug build"; } return value; } catch (IllegalAccessException e) { return "IllegalAccessException"; } catch (IllegalArgumentException e) { return "IllegalArgumentException"; } catch (InvocationTargetException e) { return "InvocationTargetException"; } } catch (NoSuchMethodException e) { return "SystemProperties.get(String key, String def) method is not found"; } } catch (ClassNotFoundException e) { return "SystemProperties class is not found"; } }}