اندروید ۱۱ مفهوم انواع کاربر خوشتعریف را معرفی کرده است که نشاندهنده انواع مختلف کاربران مجاز توسط ویژگی چندکاربره اندروید است. با این ویژگی، تولیدکنندگان اصلی تجهیزات (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: هنگام ارتقاء دستگاه از نسخهuser-type<= 1از طریق OTA، تمام پروفایلهای مدیریتشده موجود از نوعandroid.os.usertype.profile.MANAGEDرا به نوع جدیدcom.example.profilenameتبدیل میکند.