2013-07-25 10 views
6

Ograniczony profil są teraz dostępne w Androidzie od wersji 4.3, dowiedziałem się, że niektóre aplikacje, takie jak kamera, Gmail itp., Nie są dostępne w tego rodzaju profilach. Jak mogę zarządzać tymi warunkami w mojej aplikacji? Jak zarządzać produktami aplikacji i ograniczonymi ustawieniami profilu w aplikacji?Jak zarządzać ograniczonymi profilami w aplikacji na Androida?

Odpowiedz

1

Interfejsem użytkownika do kontrolowania utworzonych ograniczeń zarządza aplikacja Ustawienia systemu. Aby ustawić ograniczenia aplikacji dla użytkownika, musisz zadeklarować ograniczenia aplikacji, tworząc BroadcastReceiver, który otrzymuje intencję ACTION_GET_RESTRICTION_ENTRIES. System odwołuje się do tej intencji, wysyłając zapytanie do wszystkich aplikacji o dostępne ograniczenia, a następnie buduje interfejs użytkownika, aby umożliwić użytkownikowi głównemu zarządzanie ograniczeniami dla każdego profilu z ograniczeniami.

Aby uzyskać więcej informacji spojrzeć na http://developer.android.com/about/versions/android-4.3.html#RestrictedProfiles

5

Dzięki user370305 nawet jeśli ja już odwiedził

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

chciałbym poprawić go z odniesieniem z

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

Ograniczone Profiles to nowa funkcja wprowadzona w Androidzie Jell y Bean 4.3, który daje użytkownikom aplikacji lepszą kontrolę nad udostępnianiem tabletu.

Te ograniczone profile udostępniają aplikacje, konto Google podstawowego konta użytkownika, ale w ograniczony sposób. Nie mają dostępu do Gmaila, sklepu, kalendarza itp. Główny użytkownik może wybrać ograniczenia dla każdej aplikacji.

UserManager klasa jest przedłużony do zarządzania tych ograniczeń

UserManager.getUserRestrictions Zwraca ograniczenia użytkownika szeroki nałożone na użytkownika określonego

UserManager.getApplicationRestrictions zwraca paczkę zawierającą dowolny zapisany ograniczeń aplikacyjnych dla tego użytkownika, dla danej nazwy pakietu . Tylko aplikacja o tej nazwie pakietu może wywoływać tę metodę.

Jeśli potrzebujesz konkretnych ustawień użyć tego zamiaru filtr

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

teraz wdrożyć odbiornika audycji z listy ograniczeń Entry zwrócony jak to

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

dowolnej aplikacji, która zdecyduje się wystawiać takie ograniczenia robią to poprzez implementację odbiornika, który obsługuje akcję ACTION_GET_RESTRICTION_ENTRIES. Odbiornik następnie zwraca pakiet wyników, który zawiera pozycję o nazwie "ograniczenia", której wartością jest ArrayList.

Istnieją 3 rodzaje ograniczeń Wejście

  1. Boolean
  2. jednokrotnego wyboru
  3. wielokrotnego wyboru

Można stosować różne metody RestrictionEntry ustawienie i uzyskać różnego rodzaju ograniczeń.

Aby uzyskać dostęp do konta z ograniczonym profilu, należy dodać androida: atrybut restrictedAccountType dla tagu:

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

+1 bardzo pomocny przegląd! – rekire

+1

Upewnij się, że używasz GET_RESTRICTION_ENTRIES zamiast GET_RESTRICTIONS_ENTRIES, ponieważ właśnie straciłem na to godziny. – RuAware

+0

@RuAware Dziękujemy za poprawkę –

1

można użyć następujących sekcji kodu w celu wykrycia, czy aplikacja działa w ograniczonym profilu tryb !!

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; 
} 
Powiązane problemy