Özel kullanıcı türleri 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 özellikler, AOSP varsayılan değerinin üzerine yazılır. Belirtilmeyen tüm özellikler AOSP varsayılanına uyar. Profil türünün rozet özellikleri gibi çoğu özelliğin değiştirilmesi, söz konusu kullanıcı türünün mevcut kullanıcılarını etkiler. Ancak default-restrictions yalnızca kullanıcı oluşturulduğunda uygulandığından, config_user_types.xml dosyasının OTA tarafından değiştirilmesi durumunda bu özelliğin değiştirilmesi, mevcut kullanıcıları etkilemez. Benzer şekilde, maksimum kullanıcı sayısını belirtmek yalnızca yeni kullanıcılar oluşturulurken geçerlidir; 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ştirilmiştir:

  • 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, ebeveyn kullanıcı başına iki profil için 2 olarak ayarlanır.

  • 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.