Özel kullanıcı türlerini uygulama

Android 11, Android Çoklu Kullanıcı özelliğinin izin verdiği tüm farklı kullanıcı türlerini temsil eden iyi tanımlanmış kullanıcı türleri kavramını kullanıma sundu. OEM'ler bu özellik sayesinde, önceden tanımlanmış AOSP kullanıcı türlerini özelleştirebilir ve yeni profil türleri tanımlayabilir. Daha fazla bilgi için kullanıcı türleri bölümüne bakın.

Bu sayfada, kullanıcı türlerini özelleştirmek için gereken uygulama yönergeleri ayrıntılı olarak açıklanmıştır.

Özelleştirme

AOSP kullanıcı türlerini özelleştirmek ve yeni profil türleri tanımlamak için OEM'nin config_user_types.xml tercih edilen özelleştirmelerle birlikte kullanması gerekir. config_user_types.xml dosyası, referans bir uygulama ve yapılandırılabilir özelliklerin kapsamlı bir listesini içerir.

config_user_types.xml dosyasında belirtilen default-restrictions gibi tüm özelliklerin AOSP varsayılan değerinin üzerine yazılır. Belirtilmemiş tüm özellikler, AOSP varsayılanına uyar. Bir profil türünün rozet özellikleri gibi çoğu özelliği değiştirmek, söz konusu kullanıcı türünde önceden var olan kullanıcıları etkiler. Ancak default-restrictions yalnızca kullanıcı oluşturulduğunda uygulandığından, config_user_types.xml dosyası OTA tarafından değiştirilirse bu özelliğin değiştirilmesi, mevcut kullanıcıları etkilemez. Benzer şekilde, maksimum kullanıcı sayısının belirtilmesi yalnızca yeni kullanıcılar oluşturulurken geçerli olur; mevcut kullanıcılar kaldırılmaz.

Her kullanıcı türü için geçerli özelleştirme kısıtlamaları aşağıdaki gibidir:

  • Profiller tamamen özelleştirilebilir ve tanımlanabilir. Bu durumda, OEM'ler özel profillerinin Android'de desteklenmesi için gereken platform değişikliklerini yapmaktan sorumludur. Bunun nedeni, AOSP'nin yalnızca önceden tanımlanmış AOSP kullanıcı türlerini desteklemesidir.
  • Tam kullanıcılar tanımlanamaz ve yalnızca default-restrictions özellikleri özelleştirilebilir.
  • Sistem kullanıcısı, bu mekanizma kullanılarak özelleştirilemez. Bu durumda, default-restrictions, com.android.internal.R.array.config_defaultFirstUserRestrictions kullanılarak ayarlanabilir. Daha fazla bilgi için config.xml sayfasına göz atın.

Mevcut kullanıcı türlerini değiştirme

Mevcut kullanıcı türleri, aşağıdaki kod örneğinde gösterildiği gibi özelliklerinin geçersiz kılınmasıyla özelleştirilebilir:

<user-types version="0">
    <full-type name="android.os.usertype.full.SECONDARY" >
        <default-restrictions no_sms="true" />
    </full-type>

    <profile-type
        name='android.os.usertype.profile.MANAGED'
        max-allowed-per-parent='2'
        icon-badge='@android:drawable/ic_corp_icon_badge_case'
        badge-plain='@android:drawable/ic_corp_badge_case'
        badge-no-background='@android:drawable/ic_corp_badge_no_background' >
        <badge-labels>
            <item res='@android:string/managed_profile_label_badge' />
            <item res='@android:string/managed_profile_label_badge_2' />
        </badge-labels>
        <badge-colors>
            <item res='@android:color/profile_badge_1' />
            <item res='@android:color/profile_badge_2' />
        </badge-colors>
        <default-restrictions no_sms="true" no_outgoing_calls="true" />
    </profile-type>
</user-types>

Bu kod örneğinde, desteklenen özellikler değiştirilerek aşağıdaki AOSP kullanıcı türleri özelleştirilir:

  • Tam kullanıcı android.os.usertype.full.SECONDARY:

    • no_sms için varsayılan kısıtlama, default-restrictions no_sms="true" belirtilerek true olarak ayarlanır.
  • Profil kullanıcısı android.os.usertype.profile.MANAGED:

    • max-allowed-per-parent='2' ayarlanarak her ebeveyn kullanıcı için iki profile izin verilir.
    • Rozet özellikleri, icon-badge, badge-plain, badge-no-background, badge-labels, badge-colors kullanılarak seçilen değerlere ayarlanır.
    • no_sms ve no_outgoing_calls için varsayılan kısıtlamalar, default-restrictions no_sms="true" no_outgoing_calls="true" belirtilerek doğru olarak ayarlanır.

Bu özelliklerin anlamı ve varsayılan değerleri için UserTypeFactory.java ve UserTypeDetails.java özelliklerine bakın.

Özel profil türleri tanımlama

Aşağıdaki kod örneğinde, yeni özel profil türlerinin nasıl tanımlandığı gösterilmektedir:

<user-types version="1">
    <profile-type
        name="com.example.profilename"
        max-allowed-per-parent="2" />

    <change-user-type
        from="android.os.usertype.profile.MANAGED"
        to="com.example.profilename"
        whenVersionLeq="1" />
</user-types>

Bu kod örneğinde, com.example.profilename profil türü aşağıdaki gibi tanımlanmıştır:

  • max-allowed-per-parents, üst kullanıcı başına iki profil için 2 olarak ayarlandı.

  • change-user-type: Cihaz, OTA üzerinden <= 1'in user-type sürümünden yükseltilirken android.os.usertype.profile.MANAGED türündeki mevcut yönetilen profillerin tümünü yeni com.example.profilename türüne dönüştürür.