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_defaultFirstUserRestrictionskullanılarak ayarlanabilir. Daha fazla bilgi içinconfig.xmlsayfası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_smsvarsayı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-colorskullanılarak seçilen değerlere ayarlanır. no_smsveno_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çin2olarak ayarlanır.change-user-type: Cihaz, OTA üzerinden<= 1'inuser-typesürümünden yükseltilirkenandroid.os.usertype.profile.MANAGEDtüründeki tüm mevcut yönetilen profilleri yenicom.example.profilenametürüne dönüştürür.