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

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

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

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

في عينة التعليمات البرمجية هذه، يتم تخصيص أنواع المستخدمين التالية في مشروع Android المفتوح المصدر (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 على صحيح من خلال تحديد 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 من خلال تحديث عبر الهواء.