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

طرح نظام التشغيل 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، لأنّ "المشروع المفتوح المصدر لنظام Android" لا يتيح سوى استخدام أنواع المستخدمين المحدّدة مسبقًا في "المشروع المفتوح المصدر لنظام Android".
  • لا يمكن تحديد المستخدمين الكاملين، ويمكن تخصيص سمة 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 على "صحيح" من خلال تحديد 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 من خلال التحديث عبر الهواء.