ב-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.