В запасе Cyanogenmod ROM есть поддержка профилей, испеченных в и, хотя я не уверен, что это часть функциональности Android по умолчанию, мне было интересно, можно ли получить имя текущего выбранного профиля.
Я не смог найти документацию разработчика по этому вопросу.
(Предполагая, что Android SDK не поддерживает это, может ли приложение суперпользователя реализовать эту функциональность?)
благодаря
Трудясь через некоторый источник CM, я нашел исходный код для ProfileManager . Методы являются общедоступными, поэтому, я думаю, мне не нужно спускаться с кроличьей дыры Java-отражения … но для того, чтобы использовать эти классы, мне нужно, чтобы JARs Cyanogenmod были созданы против.
Понял. Немного уродливого отражения и вуаля. Классы – ProfileManager и Profile
Object o = getSystemService("profile"); try { Class<?> ProfileManager = Class.forName("android.app.ProfileManager"); Class<?> Profile = Class.forName("android.app.Profile"); try { Method getActiveProfile = ProfileManager.getDeclaredMethod("getActiveProfile", null); Method getName = Profile.getDeclaredMethod("getName", null); try { String strProfile = (String) getName.invoke(getActiveProfile.invoke(o)); System.out.println("Current profile is: " + strProfile); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } catch (NoSuchMethodException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { e.printStackTrace(); }