2013-04-05 14 views
8

La ROM di Cyanogenmod di riserva ha il supporto per i profili cotti e anche se non sono sicuro che questa sia una parte della funzionalità di default di Android, mi chiedevo se è possibile ottenere il nome del profilo attualmente selezionato.È possibile ottenere il profilo attualmente selezionato del telefono?

Non sono stato in grado di trovare alcuna documentazione per sviluppatori su questo.

(Supponendo che l'SDK di Android non supporta questo, può un app superutente implementare questa funzionalità?)

Grazie


arrancare attraverso qualche fonte CM ho trovato il codice sorgente per il ProfileManager . I metodi sono pubblici quindi suppongo di non aver bisogno di buttare giù la tana del riflesso Java ... ma per usare queste classi ho bisogno di alcuni JAR Cyanogenmod da costruire contro.

risposta

0

Capito. Un po 'di brutto riflesso e voilà. Le classi sono ProfileManager e 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(); 
    } 
Problemi correlati