ב-Android 11 הוצג המושג של סוגי משתמשים מוגדרים היטב, שמייצגים את כל הסוגים השונים של משתמשים שמותרים על ידי התכונה 'משתמשים מרובים' ב-Android. התכונה הזו מאפשרת ליצרני ציוד מקורי (OEM) להתאים אישית סוגי משתמשים מוגדרים מראש ב-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, לא משפיע על משתמשים שכבר קיימים. באופן דומה, הגדרת מספר מקסימלי של משתמשים חלה רק כשיוצרים משתמשים חדשים, ולא מסירה משתמשים קיימים.
אלה ההגבלות הנוכחיות על התאמה אישית לכל סוג משתמש:
- אפשר להתאים אישית את הפרופילים ולהגדיר אותם. במקרה כזה, יצרן הציוד המקורי אחראי לבצע שינויים בפלטפורמה לפי הצורך כדי שהפרופיל המותאם אישית שלו ייתמך ב-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.