2013-04-05 10 views
8

Cyanogenmod ROM ma wsparcie dla zapieczętowanych profili i chociaż nie jestem pewien, czy jest to część domyślnej funkcjonalności Androida, zastanawiałem się, czy możliwe jest uzyskanie nazwy aktualnie wybranego profilu.Czy jest możliwe pobranie aktualnie wybranego profilu telefonu?

Nie znalazłem dokumentacji programisty na ten temat.

(Zakładając, że Android SDK nie obsługuje tej funkcji, można aplikacja superuser wdrożenia tej funkcji?)

Dzięki


Trudging przez jakiegoś źródła CM znalazłem kod źródłowy dla ProfileManager . Metody są publiczne, więc myślę, że nie muszę przechodzić przez króliczą dziurę w Java Refleksji ... ale aby używać tych klas, potrzebuję kilku JARów Cyanogenmod do zbudowania.

Odpowiedz

0

Mam to. Trochę brzydkiej refleksji i voila. Klasy są ProfileManager i 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(); 
    } 
Powiązane problemy