Ö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ı getirmiştir. 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önergelerinin ayrıntıları verilmektedir.

Özelleştirme

AOSP kullanıcı türlerini özelleştirmek ve yeni profil türleri tanımlamak için OEM'in config_user_types.xml dosyasını istenen özelleştirmelerle kaplaması gerekir. config_user_types.xml dosyası bir referans uygulamasını ve yapılandırılabilir niteliklerin kapsamlı bir listesini içerir.

config_user_types.xml dosyasında belirtilen default-restrictions gibi herhangi bir öznitelik, AOSP varsayılanının üzerine yazar. Belirtilmeyen herhangi bir öznitelik, AOSP varsayılanına uyar. Profil türünün rozet özellikleri gibi çoğu özelliğin değiştirilmesi, o kullanıcı türünün önceden 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 özel özniteliğin değiştirilmesinin önceden var olan kullanıcılar üzerinde hiçbir etkisi yoktur. Benzer şekilde, maksimum kullanıcı sayısını belirlemek yalnızca yeni kullanıcılar oluşturulurken geçerlidir; mevcut kullanıcılar kaldırılmaz.

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

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

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

Mevcut kullanıcı türleri, aşağıdaki kod örneğinde gösterildiği gibi öznitelikleri 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, aşağıdaki AOSP kullanıcı türleri, desteklenen özellikler değiştirilerek ö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' ayarlanarak her ebeveyn kullanıcı için iki profile izin verilir.
    • Rozet nitelikleri icon-badge , badge-plain , badge-no-background , badge-labels , badge-colors kullanılarak istenilen değerlere ayarlanır.
    • no_sms ve no_outgoing_calls varsayılan kısıtlamaları default-restrictions no_sms="true" no_outgoing_calls="true" belirtilerek true olarak ayarlanır.

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

Özel profil türlerini tanımlayın

Aşağıdaki kod örneği, yeni, özel profil türlerinin nasıl tanımlandığını gösterir.

<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ımlanmıştır:

  • max-allowed-per-parents ebeveyn kullanıcı başına iki profil için 2 ayarlanmıştır.

  • change-user-type : cihazı <= 1 user-type sürümünden OTA aracılığıyla yükseltirken 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.