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çinconfig.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
veno_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çin2
olarak ayarlanır.change-user-type
: Cihaz, OTA üzerinden<= 1
'inuser-type
sürümünden yükseltilirkenandroid.os.usertype.profile.MANAGED
türündeki tüm mevcut yönetilen profilleri yenicom.example.profilename
türüne dönüştürür.