2013-07-25 10 views
6

Il profilo con restrizioni è ora disponibile in Android dalla 4.3, ho appreso che alcune app come fotocamera, gmail ecc non sono disponibili in questo tipo di profili. Come posso gestire questo tipo di condizioni nella mia app? Inoltre, come gestire i prodotti dell'app e le impostazioni del profilo limitato in corrispondenza della mia app?Come gestire i profili con restrizioni nell'app Android?

risposta

1

L'interfaccia utente per gli utenti per controllare le restrizioni che hai creato è gestita dall'applicazione Impostazioni del sistema. Per rendere le impostazioni di restrizione dell'app visualizzate all'utente, devi dichiarare le restrizioni fornite dall'app creando un BroadcastReceiver che riceve l'intento ACTION_GET_RESTRICTION_ENTRIES. Il sistema richiama questo intento per interrogare tutte le app per le restrizioni disponibili, quindi crea l'interfaccia utente per consentire all'utente principale di gestire le restrizioni per ciascun profilo limitato.

Per maggiori informazioni un'occhiata a http://developer.android.com/about/versions/android-4.3.html#RestrictedProfiles

5

Grazie user370305 anche se ho già visitato

http://developer.android.com/about/versions/android-4.3.html#RestrictedProfiles

Vorrei migliorarlo dal di riferimento con

https://www.youtube.com/watch?v=pdUcANNm72o

profili con limitazioni sono una nuova funzionalità introdotta in Android Jell y Bean 4.3 che consente agli utenti delle applicazioni di migliorare il controllo durante la condivisione del tablet.

Questi profili limitati condividono app, account google dell'account utente principale ma in modo limitato. Non possono accedere a gmail, play store, calendario ecc. L'utente principale può selezionare le restrizioni per ciascuna applicazione.

UserManager Class è esteso per la gestione di queste restrizioni

UserManager.getUserRestrictions restituisce il restrizioni dell'accesso degli utenti a livello imposti a un utente specifico

UserManager.getApplicationRestrictions restituisce un bundle contenente salvati restrizioni dell'applicazione per questo utente, per il nome del pacchetto . Solo un'applicazione con questo nome di pacchetto può chiamare questo metodo.

Se avete bisogno di impostazioni specifiche utilizzano questo filtro intento

<receiver android:name="GetRestrictionsReceiver"> 
<intent-filter> 
<action android:name="android.intent.action.GET_RESTRICTION_ENTRIES "/> 
</intent-filter> 
</receiver> 

ora implementare ricevitore di broadcast con elenco restrizione voce restituita come questo

public class GetRestrictionsReceiver extends BroadcastReceiver 
    { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      final PendingResult result=goAsync(); 
      new Thread(){ 
       public void run(){ 
        final Bundle extras=new Bundle(); 
        ArrayList<RestrictionEntry> newEntries = initRestricions(context); 
        extras.putParcelableArrayList(Intent.EXTRA_RESTRICTIONS_LIST, newEntries); 

        result.setResult(Activity.RESULT_OK, null, extras); 
        result.finish(); 
       } 

      }.start(); 

     } 


    } 

RestrictionEntry

Qualsiasi applicazione che sceglie di esporre tale le restrizioni lo fanno implementando un ricevitore che gestisce l'azione ACTION_GET_RESTRICTION_ENTRIES. Il ricevitore restituisce quindi un pacchetto di risultati che contiene una voce denominata "restrizioni", il cui valore è un oggetto ArrayList.

Ci sono 3 tipi di restrizione Entrata

  1. booleano
  2. Single Choice
  3. scelta multipla

È possibile utilizzare diversi metodi di RestrictionEntry per impostare e ottenere diversi tipi di restrizioni.

per ottenere l'accesso a un account da un profilo limitato, è necessario aggiungere l'attributo android: restrictedAccountType al tag:

<application ... 
    android:restrictedAccountType="com.example.account.type" > 
+0

+1 panoramica molto utile! – rekire

+1

Assicurati di utilizzare GET_RESTRICTION_ENTRIES anziché GET_RESTRICTIONS_ENTRIES perché ho appena perso ore su questo. – RuAware

+0

@RuAware Grazie per la correzione –

1

è possibile utilizzare la sezione seguente codice per rilevare se la vostra applicazione è in esecuzione in profilo con limitazioni modalità !!

import android.content.pm.UserInfo; 
import android.os.UserHandle; 
import android.os.UserManager; 

public static boolean isRestrictedProfileInEffect(Context context) { 
    UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); 
    UserInfo restrictedUserInfo = null; 
    for (UserInfo userInfo : userManager.getUsers()) { 
     if (userInfo.isRestricted()) { 
      restrictedUserInfo = userInfo; 
     } 
    } 
    boolean isOwner = UserHandle.myUserId() == UserHandle.USER_OWNER; 
    boolean isRestrictedProfileOn = restrictedUserInfo != null && !isOwner; 
    return isRestrictedProfileOn; 
} 
Problemi correlati