تنفيذ أنواع المستخدم المخصصة

قدم Android 11 مفهوم أنواع المستخدمين المحددة جيدًا، والتي تمثل جميع أنواع المستخدمين المختلفة التي تسمح بها ميزة Android Multi-user. باستخدام هذه الميزة، يمكن لمصنعي المعدات الأصلية تخصيص أنواع مستخدمي 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، ليس له أي تأثير على المستخدمين الموجودين مسبقًا. وبالمثل، فإن تحديد الحد الأقصى لعدد المستخدمين لا ينطبق إلا عند إنشاء مستخدمين جدد؛ لا تتم إزالة المستخدمين الحاليين.

قيود التخصيص الحالية لكل نوع مستخدم هي كما يلي:

  • يمكن تخصيص الملفات الشخصية وتحديدها بالكامل. في هذه الحالة، يكون OEM مسؤولاً عن إجراء تعديلات النظام الأساسي كما هو مطلوب لدعم ملف التعريف المخصص الخاص به في 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.