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