הטמעת סוגי משתמשים בהתאמה אישית

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