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