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

ב-Android 11 הוצג המושג של סוגי משתמשים מוגדרים היטב, שמייצגים את כל הסוגים השונים של משתמשים שמותרים על ידי התכונה 'משתמשים מרובים' ב-Android. התכונה הזו מאפשרת ליצרני ציוד מקורי (OEM) להתאים אישית סוגי משתמשים מוגדרים מראש ב-AOSP ולהגדיר סוגי פרופילים חדשים. מידע נוסף זמין בקטע בנושא סוגי משתמשים.

בדף הזה מפורטות ההנחיות להטמעה שנדרשות כדי להתאים אישית את סוגי המשתמשים.

התאמה אישית

כדי להתאים אישית את סוגי המשתמשים ב-AOSP ולהגדיר סוגי פרופילים חדשים, יצרן ה-OEM צריך להשתמש בשכבת-על (overlay) של 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.