Özel kullanıcı türleri uygulama

Android 11, Android çok kullanıcılı özelliği tarafından izin verilen tüm farklı kullanıcı türlerini temsil eden, iyi tanımlanmış kullanıcı türleri kavramını tanıttı. Bu özellik sayesinde OEM'ler, ö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çıklanmaktadı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 öğesini tercih edilen özelleştirmelerle kaplaması gerekir. config_user_types.xml dosyası, referans 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ını geçersiz kılar. Belirtilmeyen tüm özellikler AOSP varsayılanına uyar. Profil türünün rozet özellikleri gibi çoğu özelliği değiştirmek, söz konusu kullanıcı türünün önceden var olan kullanıcılarını etkiler. Ancak default-restrictions yalnızca kullanıcı oluşturulurken 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ı 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ı şunlardır:

  • Profiller tamamen özelleştirilebilir ve tanımlanabilir. Bu durumda, AOSP yalnızca önceden tanımlanmış AOSP kullanıcı türlerini desteklediğinden, OEM'ler özel profillerinin Android'de desteklenmesi için gerekli platform değişikliklerini yapmaktan sorumludur.
  • 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ını inceleyin.

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

Mevcut kullanıcı türleri, aşağıdaki kod örneğinde gösterildiği gibi özellikleri geçersiz kılınarak ö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 varsayılan kısıtlaması, default-restrictions no_sms="true" belirtilerek true olarak ayarlanır.
  • Profil kullanıcısı android.os.usertype.profile.MANAGED:

    • max-allowed-per-parent='2' ayarını yaparak her ebeveyn kullanıcısı 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 öğelerinin 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 bölümlerini inceleyin.

Özel profil türleri tanımlama

Aşağıdaki kod örneğinde, yeni ve ö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ü şu şekilde tanımlanı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 tüm mevcut yönetilen profilleri yeni com.example.profilename türüne dönüştürür.