قدم Android 11 مفهوم أنواع المستخدمين المحددة جيدًا، والتي تمثل جميع أنواع المستخدمين المختلفة التي تسمح بها ميزة Android Multi-user. باستخدام هذه الميزة، يمكن لمصنعي المعدات الأصلية تخصيص أنواع مستخدمي AOSP المحددة مسبقًا وتحديد أنواع ملفات التعريف الجديدة. راجع القسم الخاص بأنواع المستخدمين لمزيد من المعلومات.
تعرض هذه الصفحة تفاصيل إرشادات التنفيذ اللازمة لتخصيص أنواع المستخدمين.
التخصيص
من أجل تخصيص أنواع مستخدمي AOSP وتحديد أنواع ملفات تعريف جديدة، يجب على OEM تراكب config_user_types.xml
مع التخصيصات المطلوبة. يحتوي الملف config_user_types.xml
على تطبيق مرجعي وقائمة شاملة من السمات القابلة للتكوين.
أي سمة، مثل default-restrictions
، المحددة في الملف config_user_types.xml
، تقوم بالكتابة فوق الإعداد الافتراضي لـ AOSP. أي سمة لم يتم تحديدها، تتبع الإعداد الافتراضي لـ AOSP. يؤثر تغيير معظم السمات، مثل سمات شارة نوع الملف الشخصي، على المستخدمين الموجودين مسبقًا من نوع المستخدم هذا. ومع ذلك، نظرًا لأنه يتم تطبيق default-restrictions
فقط في وقت إنشاء المستخدم، فإن تعديل هذه السمة المحددة، في حالة تغيير الملف config_user_types.xml
بواسطة OTA، ليس له أي تأثير على المستخدمين الموجودين مسبقًا. وبالمثل، فإن تحديد الحد الأقصى لعدد المستخدمين لا ينطبق إلا عند إنشاء مستخدمين جدد؛ لا تتم إزالة المستخدمين الحاليين.
قيود التخصيص الحالية لكل نوع مستخدم هي كما يلي:
- يمكن تخصيص الملفات الشخصية وتحديدها بالكامل. في هذه الحالة، يكون OEM مسؤولاً عن إجراء تعديلات النظام الأساسي كما هو مطلوب لدعم ملف التعريف المخصص الخاص به في Android، نظرًا لأن AOSP يدعم فقط أنواع مستخدم AOSP المحددة مسبقًا.
- لا يمكن تحديد المستخدمين الكاملين ويمكن تخصيص سمة
default-restrictions
الخاصة بهم فقط. - لا يمكن تخصيص مستخدم النظام باستخدام هذه الآلية. في هذه الحالة، يمكن تعيين
default-restrictions
باستخدامcom.android.internal.R.array.config_defaultFirstUserRestrictions
. راجعconfig.xml
لمزيد من المعلومات.
تعديل أنواع المستخدمين الموجودة
يمكن تخصيص أنواع المستخدمين الموجودة عن طريق تجاوز سماتها كما هو موضح في نموذج التعليمات البرمجية التالي.
<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>
في نموذج التعليمات البرمجية هذا، يتم تخصيص أنواع مستخدمي AOSP التالية عن طريق تعديل الخصائص المدعومة.
المستخدم الكامل
android.os.usertype.full.SECONDARY
:- يتم تعيين القيد الافتراضي لـ
no_sms
على true عن طريق تحديدdefault-restrictions no_sms="true"
.
- يتم تعيين القيد الافتراضي لـ
الملف الشخصي للمستخدم
android.os.usertype.profile.MANAGED
:- يُسمح بملفين شخصيين لكل مستخدم أصلي عن طريق تعيين
max-allowed-per-parent='2'
. - يتم تعيين سمات الشارة على القيم المطلوبة باستخدام
icon-badge
وbadge-plain
وbadge-no-background
وbadge-labels
وbadge-colors
. - يتم تعيين القيود الافتراضية لـ
no_sms
وno_outgoing_calls
على true من خلال تحديدdefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- يُسمح بملفين شخصيين لكل مستخدم أصلي عن طريق تعيين
ارجع إلى UserTypeFactory.java
و UserTypeDetails.java
للتعرف على المعنى والقيم الافتراضية لهذه الخصائص.
تحديد أنواع ملفات التعريف المخصصة
يوضح نموذج التعليمات البرمجية التالي كيفية تعريف أنواع ملفات التعريف الجديدة والمخصصة.
<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>
في نموذج التعليمات البرمجية هذا، يتم تعريف نوع ملف التعريف com.example.profilename
كما يلي:
تم تعيين
max-allowed-per-parents
على2
لملفين شخصيين لكل مستخدم أصلي.change-user-type
: يحول جميع ملفات التعريف المُدارة الموجودة من النوعandroid.os.usertype.profile.MANAGED
إلى نوعcom.example.profilename
الجديد عند ترقية الجهاز من إصدارuser-type
<= 1
عبر OTA.