پیاده سازی انواع کاربر سفارشی

اندروید 11 مفهوم انواع کاربری کاملاً تعریف شده را معرفی کرده است که نشان دهنده همه انواع مختلف کاربران مجاز توسط ویژگی چند کاربر اندروید است. با این ویژگی، 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 تغییر کند، هیچ تأثیری بر کاربران قبلی ندارد. به طور مشابه، تعیین حداکثر تعداد کاربران فقط در هنگام ایجاد کاربران جدید اعمال می شود. کاربران موجود حذف نمی شوند.

محدودیت های سفارشی سازی فعلی برای هر نوع کاربر به شرح زیر است:

  • نمایه ها را می توان به طور کامل سفارشی و تعریف کرد. در این مورد، OEM مسئول ایجاد تغییرات پلتفرم برای پشتیبانی از نمایه سفارشی آن در اندروید است، زیرا 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 با تعیین default-restrictions no_sms="true" روی 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" روی 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 تبدیل می کند.